Razor 从模型访问MVC5 razow视图中的子集合
我目前在尝试访问模型中的子集合时遇到问题 我的模型如下所示(请记住,我已经去掉了很多值,我的模型没有那么小):Razor 从模型访问MVC5 razow视图中的子集合,razor,model-view-controller,asp.net-core-2.0,Razor,Model View Controller,Asp.net Core 2.0,我目前在尝试访问模型中的子集合时遇到问题 我的模型如下所示(请记住,我已经去掉了很多值,我的模型没有那么小): 公共类游戏 { 公共int Id{get;set;} 公共字符串标题{get;set;} 公共ICollection详细信息{get;set;} } 现在,我可以使用一个简单的linq查询轻松地获取控制器中的数据,并包含子数据(在本例中为“详细信息”) 然而,我很难看到如何访问这些数据,既可以用于发布,也可以在将其传递回视图时读取 我的观点是这样的: <dt>
公共类游戏
{
公共int Id{get;set;}
公共字符串标题{get;set;}
公共ICollection详细信息{get;set;}
}
现在,我可以使用一个简单的linq查询轻松地获取控制器中的数据,并包含子数据(在本例中为“详细信息”)
然而,我很难看到如何访问这些数据,既可以用于发布,也可以在将其传递回视图时读取
我的观点是这样的:
<dt>
@Html.DisplayNameFor(model => model.Title)
</dt>
<dd>
@Html.DisplayFor(model => model.Title)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Details)
</dt>
<dd>
@Html.DisplayFor(model => model.Details)
</dd>
@DisplayNameFor(model=>model.Title)
@DisplayFor(model=>model.Title)
@DisplayNameFor(model=>model.Details)
@DisplayFor(model=>model.Details)
但我似乎无法访问子集合中的数据
我已经试过了。但我无法访问子集合中的数据
任何帮助都将不胜感激。使用带有列表的@for循环
@for (int i = 0; i < model.Details.Count(); i++)
{
<dt>
@Html.DisplayNameFor(model => model.Details[i].Title)
</dt>
...
}
@for(int i=0;imodel.Details[i].Title)
...
}
最好在模型中使用列表,而不是ICollection,因此视图模型包含要显示的项目的最终列表。使用带有列表的@for循环
@for (int i = 0; i < model.Details.Count(); i++)
{
<dt>
@Html.DisplayNameFor(model => model.Details[i].Title)
</dt>
...
}
@for(int i=0;imodel.Details[i].Title)
...
}
最好在模型中使用列表,而不是ICollection-因此视图模型包含要显示的项目的最终列表。我认为问题不在于使用
List
而不是ICollection
- 阅读:您可以使用
或@foreach
迭代集合中的项@for()
- 过帐:这是在使用
和@foreach
或HtmlHelper
在表单内生成输入时不起作用的,因为TagHelper
将为这些输入生成相同的ID。因此,必须将@foreach
与索引一起使用@for()
@Html.DisplayFor()
。我想你知道你在做什么@Html.DisplayFor()
将呈现与属性类型匹配的名为DisplayTemplates
的模板
例如,假设属性Title
是String
,如果在视图的DisplayTemplates
文件夹中定义了名为String.cshtml
的视图,则调用@Html.DisplayFor(x=>x.Title)
将使用该模板为该属性呈现
String.cshtml
@model string
@if (String.IsNullOrEmpty(Model))
{
<!-- You can render different HTML elements here -->
}
else
{
<!-- You can render different HTML elements here -->
}
我认为问题不在于使用
List
而不是ICollection
- 阅读:您可以使用
或@foreach
迭代集合中的项@for()
- 过帐:这是在使用
和@foreach
或HtmlHelper
在表单内生成输入时不起作用的,因为TagHelper
将为这些输入生成相同的ID。因此,必须将@foreach
与索引一起使用@for()
@Html.DisplayFor()
。我想你知道你在做什么@Html.DisplayFor()
将呈现与属性类型匹配的名为DisplayTemplates
的模板
例如,假设属性Title
是String
,如果在视图的DisplayTemplates
文件夹中定义了名为String.cshtml
的视图,则调用@Html.DisplayFor(x=>x.Title)
将使用该模板为该属性呈现
String.cshtml
@model string
@if (String.IsNullOrEmpty(Model))
{
<!-- You can render different HTML elements here -->
}
else
{
<!-- You can render different HTML elements here -->
}