如何在Asp.Net mvc中使用Datatable代替实体框架?DataTable代替Asp.Net MVC中的实体框架MVC
我指的是本教程在asp.net网站.... http://www.asp.net/Learn/mvc/tutorial-21-cs.aspx ....我可以返回一个数据表,而不是电影或movielist对象?
如何在Asp.Net mvc中使用Datatable代替实体框架?DataTable代替Asp.Net MVC中的实体框架MVC
我指的是本教程在asp.net网站.... http://www.asp.net/Learn/mvc/tutorial-21-cs.aspx ....我可以返回一个数据表,而不是电影或movielist对象?
如果可以将其存储(序列化)到ViewData中,您可以返回任何想要的结果。关于ASP.NET MVC没有什么“魔术”限制了值和/或类型。
如果你想遍历视图中的DataTable,把它放在控制器的ViewData中,在View中检索它,并像在其他任何地方一样遍历它。
所以类似下面的东西应该工作:
<%
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,你不必使用实体框架与数据库进行通信。
在控制器内部,您可以使用任何方法从数据库中获取数据。然后,您可以将该数据转换为传递给View的自定义对象,也可以将DataTable传递给您的视图。
你的观点只是要知道如何遍历你传递给它的对象。但是,我建议使用POCO对象传递给您的视图,以便您不会将视图数据与用于从数据库中提取信息的技术紧密结合。
这很适合回答他的问题,但我不建议将DataTables(或实体)传递给视图,因为它将视图与用于从数据库中获取数据的技术紧密结合在一起。在我看来,使用POCO对象更好。 – 7wp 2009-08-30 14:35:42
它在MVC中不叫ViewState,它叫做ViewData。我同意Roberto的观点,您应该将包含您需要的数据的对象传递给您的视图。不要只传递一个DataTable。 – BFree 2009-08-30 15:56:28
是的。在我的部分错别字。我同意罗伯托。我一直在与一个更旧的继承应用程序战斗,Viewstate在我心中。现在修复代码/评论。 – andymeadows 2009-08-30 22:27:36