我有一个非常简单的场景,我的视图模型是一个列表。
像这样循环遍历列表
@foreach(CustomObject obj in Model)
{
Html.Partial("_TrackingCustomObject",obj)
}
所以我期望根据我的列表有一些部分视图。
部分视图已相应开发。
页面上没有错误。它只是不显示任何应该由局部视图显示的数据。
不显示任何数据的原因是什么?
我有一个非常简单的场景,我的视图模型是一个列表。
像这样循环遍历列表
@foreach(CustomObject obj in Model)
{
Html.Partial("_TrackingCustomObject",obj)
}
所以我期望根据我的列表有一些部分视图。
部分视图已相应开发。
页面上没有错误。它只是不显示任何应该由局部视图显示的数据。
不显示任何数据的原因是什么?
你错过了一个@:
@foreach(CustomObject obj in Model)
{
@Html.Partial("_TrackingCustomObject", obj)
}
但是,当您可以使用编辑器/显示模板时,为什么还要编写 foreach 循环呢?像这样:
@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()
您必须将剩余的 stuf 包装在 a<div>
或其他容器中,否则 html 元素将不会被呈现。
前任。
这行不通
@using(Html.BeginForm())
{
Html.EditorFor(m => m.Name)
}
这会起作用
@using(Html.BeginForm())
{
<div>
@Html.EditorFor(m => m.Name)
</div>
}
试试这个:
@Html.RenderPartial("_TrackingCustomObject",obj)
有点晚了,但这在 MVC 4 中对我有用:
@foreach (var p in @Model.RelatedCards)
{
Html.RenderPartial("_ThumbPartial", p);
}
这太旧了,但有人可以使用它。
@foreach(CustomObject obj in Model)
{
<text>
Html.Partial("_TrackingCustomObject",obj)
</text>
}