我有一个很简单的场景,我的视图的模型是一个List。
像这样循环浏览List
@foreach(CustomObject obj in Model)
{
Html.Partial("_TrackingCustomObject",obj)
}
所以我希望根据我的列表有一些局部视图。
局部视图已相应开发。
页面上没有任何错误,只是没有显示任何应该由局部视图显示的数据。它只是不显示任何数据,而这些数据应该由局部视图显示。
不显示任何数据的原因是什么?
你少了一个@。
@foreach(CustomObject obj in Model)
{
@Html.Partial("_TrackingCustomObject", obj)
}
但为什么要写foreach循环呢? 你可以用editordisplay模板?就像这样。
@model IEnumerable<CustomObject>
@Html.EditorForModel()
然后简单地定义相应的编辑器模板 (~/Views/Shared/EditorTemplates/CustomObject.cshtml
),将自动为您的模型的每个元素渲染。
@model CustomObject
<div>
@Html.EditorFor(x => x.Foo)
</div>
简单而传统 :-)
你缺少了Razor符号 @
:
@foreach(CustomObject obj in Model)
{
@Html.Partial("_TrackingCustomObject",obj)
}
也是 确保 您的部分视图使用的是对象类型 CustomObject
作为模型。
@model MyProject.Models.CustomObject
<h1>Yeah we're in a partial! @Model.SomeProperty </h1>
要尝试并钻研错误所在,可以尝试在PartialView内放置一些静态文本。
<p>Some text</p>
如果你的集合有10个项目,那么你应该看到其中的10个段落。接下来一旦成功了,就集中精力在每个项目中显示一些属性。
@model MyProject.Models.CustomObject
<p>Some text</p>
<p>@Model.SomeProperty</p>
当你在创建html表格时,使用 @Html.BeginForm()
你必须把剩下的东西包在一个袋子里。<div>
或其他容器,否则html元素不会被渲染。
例如
这样做是行不通的
@using(Html.BeginForm())
{
Html.EditorFor(m => m.Name)
}
这样就可以了
@using(Html.BeginForm())
{
<div>
@Html.EditorFor(m => m.Name)
</div>
}
今天有点晚了,但这个在MVC 4中对我来说是有效的。
@foreach (var p in @Model.RelatedCards)
{
Html.RenderPartial("_ThumbPartial", p);
}
这个太老了,但有人可以用它。
@foreach(CustomObject obj in Model)
{
<text>
Html.Partial("_TrackingCustomObject",obj)
</text>
}
试试这个:
@Html.RenderPartial("_TrackingCustomObject",obj)