C# 在Razor中高效显示查询结果

C# 在Razor中高效显示查询结果,c#,asp.net,razor,datagrid,C#,Asp.net,Razor,Datagrid,我已经用Visual C和Razor选项创建了一个ASP.NET MVC4 Web应用程序 HomeController.cs Tasks.cshtml 我有以下SQL Server 2012数据库表布局 我能够很好地查询表,并分别提取每个字段的值 我要做的是在排序的DataGridView中向用户显示包含select*查询中所有字段的结果集。我可以很容易地将每个值放入一个TR TD中,然后将其放入一个字符串中,在.cshtml端显示它。。。但这并没有真正教会我什么,我怀疑它是否非常有效 旁注:

我已经用Visual C和Razor选项创建了一个ASP.NET MVC4 Web应用程序

HomeController.cs

Tasks.cshtml

我有以下SQL Server 2012数据库表布局

我能够很好地查询表,并分别提取每个字段的值

我要做的是在排序的DataGridView中向用户显示包含select*查询中所有字段的结果集。我可以很容易地将每个值放入一个TR TD中,然后将其放入一个字符串中,在.cshtml端显示它。。。但这并没有真正教会我什么,我怀疑它是否非常有效


旁注:很难从查询中找到有关Razor和显示数据的相关信息。这是因为它是新的,还是Razor是C新手要避免的东西?

这不是Razor视图引擎的错误,它更像是整个ASP.Net MVC的缺点

与Webforms不同,ASP.NETMVC不提供自动转换为HTML的服务器端控件。因此,基本上,您必须手工构建所有HTML

当然,有一些称为HTML助手的内置类可以帮助您处理常见的HTML内容

但不幸的是,没有为网格生成HTLM的内置助手

您可以构建自己的是的,手动编写helper类来完成所有td/tr工作。。。或者使用现有的解决方案。 例如,见:


通过在Razor视图引擎中迭代模型项,将数据传递到模型并在客户端动态构建网格。将所需的值提取到适当的单元格,仅此而已。记住只将您真正想要使用的数据传递给客户机。不要使用冗余信息使网络过载,这会降低页面呈现速度。在从数据库检索数据时,最好不要在服务器端使用select*——应用一些限制来收缩要提取的数据。
    public ActionResult Tasks()
    {
        ViewBag.Message = "Tasks";

        string selectSql = "select * from Tasks";

        string connectionString = @"Data Source=lpc193\adamssqlserver;Database=master;Integrated Security=True;";

        DateTime strt;

        using (var cn = new SqlConnection(connectionString))
        using (var cmd = new SqlCommand(selectSql, cn))
        {
            cn.Open();

            using (var reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    strt = reader.GetDateTime(reader.GetOrdinal("Start"));
                }
            }
        }

        return View();
    }
@{ 
    ViewBag.Title = "Tasks To Complete"; 
}

These are the tasks from the table

<!-- some datagrid object here ?? -->