Asp.net mvc 如何在cshtml视图中列出不同表中的记录?
我在ASP.NET MVC项目中遇到问题。我有一个数据库,其中有几个表,我想在我的视图中列出每个表中的所有记录,我可以使用一个表来完成这项工作,我将在这里提供使用一个表的代码以及我正在尝试做的事情 控制器:Asp.net mvc 如何在cshtml视图中列出不同表中的记录?,asp.net-mvc,database,razor,Asp.net Mvc,Database,Razor,我在ASP.NET MVC项目中遇到问题。我有一个数据库,其中有几个表,我想在我的视图中列出每个表中的所有记录,我可以使用一个表来完成这项工作,我将在这里提供使用一个表的代码以及我正在尝试做的事情 控制器: @*This is defined at the top of my .cshtml*@ @model IEnumerable<Interface_AutoUtad.Models.Mp5DataclassesDataContext> @*This is the code tha
@*This is defined at the top of my .cshtml*@
@model IEnumerable<Interface_AutoUtad.Models.Mp5DataclassesDataContext>
@*This is the code that works with only one table*@
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
@*What I am trying to do:*@
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.some_other_table.table_column)
}
仅使用一个表,我将执行以下操作:
Mp5DataclassesDataContext db = new Mp5DataclassesDataContext();
public ActionResult Admin()
{
return View(db);
}
这就是我想做的:
return View(db);
此时,我可以调试并看到我的所有表都在该db对象中,并且具有所有正确的数据。那么问题就在我看来
查看:
@*This is defined at the top of my .cshtml*@
@model IEnumerable<Interface_AutoUtad.Models.Mp5DataclassesDataContext>
@*This is the code that works with only one table*@
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
@*What I am trying to do:*@
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.some_other_table.table_column)
}
@*这是在my.cshtml的顶部定义的*@
@模型IEnumerable
@*这是只适用于一个表的代码*@
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.table\u列)
}
@*我想做的是:*@
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.some\u other\u table.table\u列)
}
我不能让这最后一部分工作,因为“另一张桌子”没有出现。
有什么办法可以做到这一点吗?我希望遍历每个表,并在内部遍历该表中的每个记录
提前感谢大家:)看起来您已经将视图的“模型”设置为应用程序的
DbContext
。不要那样做。视图只在运行时处理,对视图来说,查询数据库的逻辑太多。任何错误都只会在运行时暴露,并且您有巨大的错误可能性
视图设计为仅使用一种类型。如果需要在同一视图中使用多个类型,则可以使用视图模型或子操作
视图模型
儿童行动
然后,为以下各项创建适当的局部视图:
ListSomeTypes.cshtml
@model IEnumerable<Namespace.To.SomeType>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
@model IEnumerable<Namespace.To.OtherType>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
(在这种情况下,主视图的模型是完全不相关的。)你能分享模型类的代码吗?嗨,克里斯!我对你的代码感激不尽,它就像一个符咒!谢谢你花时间帮我解决问题。
@model IEnumerable<Namespace.To.SomeType>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
@model IEnumerable<Namespace.To.OtherType>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.table_column)
}
@Html.Action("ListSomeTypes")
@Html.Action("ListOtherTypes")