5

我有一个非常简单的场景,我的视图模型是一个列表。

像这样循环遍历列表

@foreach(CustomObject obj in Model)
{
Html.Partial("_TrackingCustomObject",obj)
}

所以我期望根据我的列表有一些部分视图。

部分视图已相应开发。

页面上没有错误。它只是不显示任何应该由局部视图显示的数据。

不显示任何数据的原因是什么?

4

6 回答 6

11

你错过了一个@:

@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>

简单而传统:-)

于 2012-07-13T17:28:26.557 回答
0

您缺少 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>
于 2012-07-13T17:29:45.323 回答
0

当您使用创建 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>
}
于 2012-07-13T17:55:52.243 回答
0

试试这个

@Html.RenderPartial("_TrackingCustomObject",obj)
于 2012-07-13T17:23:11.677 回答
0

有点晚了,但这在 MVC 4 中对我有用:

 @foreach (var p in @Model.RelatedCards)
    {
        Html.RenderPartial("_ThumbPartial", p);
    }
于 2012-11-13T21:59:19.553 回答
-1

这太旧了,但有人可以使用它。

@foreach(CustomObject obj in Model)
{
    <text>
        Html.Partial("_TrackingCustomObject",obj)
    </text>
}
于 2016-02-18T23:18:30.153 回答