渲染MVC3在循环中的局部视图(Rendering Partial Views in a Loop

2019-09-19 11:03发布

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

通过像列表循环

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

所以,我期待根据我的名单有部分意见数。

部分景观已制定了相应的。

目前网页上没有错误。 它只是不表明应该通过局部视图来显示任何数据。

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

Answer 1:

你缺少一个@:

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

简单和常规:-)



Answer 2:

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



Answer 3:

你错过了剃刀符号@

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


Answer 4:

当您创建一个使用HTML表单@Html.BeginForm()你必须包装内的剩余塞入一个<div>或其他容器否则html元素将不会呈现。

防爆。

这是不行的

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

这将工作

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


Answer 5:

当天晚了一些,但是这在MVC 4为我工作:

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


Answer 6:

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

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


文章来源: Rendering Partial Views in a Loop in MVC3