2012-07-13 128 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> 
}