Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.NETMVC中用数据表代替实体框架_C#_Asp.net Mvc_Datatable - Fatal编程技术网

C# Asp.NETMVC中用数据表代替实体框架

C# Asp.NETMVC中用数据表代替实体框架,c#,asp.net-mvc,datatable,C#,Asp.net Mvc,Datatable,如何在Asp.NETMVC中使用Datatable而不是实体框架 我指的是asp.net网站上的本教程。。。。 ..我是否可以返回一个数据表而不是电影或电影列表对象???如果可以在ViewData中存储(序列化),则可以返回任何需要的内容。ASP.NET MVC并没有约束值和/或类型的“魔力” 如果要在视图中迭代DataTable,请将其放入控制器的ViewData中,在视图中检索它,然后像在其他任何地方一样迭代它 因此,类似于以下内容的方法应该会起作用: <% var tbl = Vi

如何在Asp.NETMVC中使用Datatable而不是实体框架

我指的是asp.net网站上的本教程。。。。
..我是否可以返回一个数据表而不是电影或电影列表对象???

如果可以在ViewData中存储(序列化),则可以返回任何需要的内容。ASP.NET MVC并没有约束值和/或类型的“魔力”

如果要在视图中迭代DataTable,请将其放入控制器的ViewData中,在视图中检索它,然后像在其他任何地方一样迭代它

因此,类似于以下内容的方法应该会起作用:

<%
var tbl = ViewData["MyDataTable"];

foreach (DataRow row in tbl.Rows)
{
  foreach (DataColumn col in tbl.Columns)
  {
    Response.Write(row[col] as string ?? string.Empty);
  }
}
%>

如果我正确理解了您的问题,就因为您使用的是MVC,就不必使用实体框架与数据库通信

在控制器内部,您可以使用任何方式从数据库中获取数据。然后,您可以将该数据转换为一个自定义对象,并将其传递给视图,也可以将一个数据表传递给视图

您的视图只需要知道如何遍历您传递给它的对象


但是,我建议使用POCO对象传递到视图,这样您就不会将视图数据与用于从数据库提取信息的技术紧密耦合。

这有助于回答他的问题,但我不建议将数据表(或实体)传递到视图,因为它将视图与用于从数据库中获取数据的技术紧密结合。在我看来,最好使用POCO对象。在MVC中,它不是ViewState,而是ViewData。我同意Roberto的观点,您应该将包含所需数据的对象从控制器传递到视图。不要只传递一个数据表。我的打字错误。我同意罗伯托的观点。我一直在与一个旧的继承应用程序抗争,Viewstate就在我的脑海中。正在修复代码/注释。此POCO对象是什么?普通旧CLR对象?好的,但是我想知道如何将数据表转换成POCO对象。您是对的POCO=普通旧CLR对象。您不需要将数据库“制作”到POCO中。您可以使用任何方式获取数据,例如DataTable,甚至实体框架。但在获得数据后,您会将其转换为您自己的POCO对象。将POCO对象视为数据的“载体”。然后,您的视图可以与此紧密耦合,因此在不重新编码整个视图的情况下更改数据访问层不会太困难。