Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Asp.net mvc 如何在cshtml视图中列出不同表中的记录?_Asp.net Mvc_Database_Razor - Fatal编程技术网

Asp.net mvc 如何在cshtml视图中列出不同表中的记录?

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

我在ASP.NET MVC项目中遇到问题。我有一个数据库,其中有几个表,我想在我的视图中列出每个表中的所有记录,我可以使用一个表来完成这项工作,我将在这里提供使用一个表的代码以及我正在尝试做的事情

控制器:

@*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")