在MVC3中循环渲染部分视图

时间:2012-07-13 17:20:05

标签: asp.net-mvc-3 asp.net-mvc-partialview

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

循环浏览列表

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

所以我希望根据我的列表有一些部分观点。

部分视图已相应开发。

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

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

6 个答案:

答案 0 :(得分:9)

你错过了一个@:

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

简单而传统: - )

答案 1 :(得分:0)

尝试:@ Html.RenderPartial(“_ TrackingCustomObject”,obj)

答案 2 :(得分:0)

你错过了剃刀符号@

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

答案 3 :(得分:0)

使用@Html.BeginForm()创建html表单时,必须将剩余的stuf包装在<div>或其他容器中,否则html元素将无法呈现。

实施例

这不起作用

@using(Html.BeginForm())
{
  Html.EditorFor(m => m.Name)
}

这将有效

@using(Html.BeginForm())
{
   <div>    
      @Html.EditorFor(m => m.Name)
   </div>
}

答案 4 :(得分:0)

当天晚些时候,但这在MVC 4中对我有用:

 @foreach (var p in @Model.RelatedCards)
    {
        Html.RenderPartial("_ThumbPartial", p);
    }

答案 5 :(得分:0)

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

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