2012-07-13 71 views
4

我有一个非常简单的场景,我的视图的模型是一个List。在MVC3的循环中渲染部分视图

遍历目录像

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

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

部分视图已相应开发。

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

什么原因没有显示任何数据?

回答

0

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

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> 

简单和常规:-)

+0

没有这不是一个问题,因为我使用剃刀视图我不需要把@everywhere。仍然在改变它也不起作用 – 2012-07-13 17:30:01

+0

如果这不起作用,那么我怀疑你的问题是在别的地方。例如,您可以开始查看您的'_TrackingCustomObject.cshtml'部分。 – 2012-07-13 17:31:32

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

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

Ex。

这是不行的

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

这将工作

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

位晚了一天,但在MVC 4为我工作:

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

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

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