2012-08-13 32 views
0

我有一個應用程序顯示問題的網格/表,每個問題都有一個狀態下拉列表。有大約1-200個問題,每個狀態下降大約有50個選擇,對於電網的每一行都是相同的。使用HTML.DisplayFor時,我可以傳遞不同的模型到我的網格嗎?

我的控制器通過以下的模型的視圖:

IEnumerable<Question.Grid> 

然後在我的視圖我有以下代碼打印出一個格表的細節行:

<tbody class="grid"> 
@if (Model != null) { 
    foreach (var item in Model) { 
    @Html.DisplayFor(model => item, "QuestionDetail") 
    } 
} 
</tbody> 

每網格線有一個狀態下拉列表,我想將下拉的數據(每行相同)傳遞給QuestionDetail視圖。什麼是最好的辦法,我發這個信息,所以,我認爲,我可以有類似如下:

所有的
@Html.DropDownList("Question.Status", Status, new { id = "StatusID"}) 

回答

0

首先,不要通過視圖模型的IEnumerable的。而是定義一個有作爲的IEnumerable這樣的特性:

public class EnumViewModel 
{ 
    public IEnumerable<Question.Grid> Questions { get; set; } 
    public int MyAdditionalFieldIWantedToPassAlong { get; set; } 
} 
public class Question.Grid 
{ 
    public string MyExistingFields { get; set; } 
    // as many as you had 
    public string MyAdditionalFields { get; set; } 
    // as much as you want 
} 

,有你的觀點得到一個模型來代替的車型名單爲@model EnumViewModel。 此時,您應該很容易添加任何附加信息,因爲如果您的心臟在EnumViewModel中,請將其添加到此處。如果問題更具體,請將其放在那裏,並在包含該StatusID的列表中的每個模型中享用您的項目。

把它看成是只是一個容器您舉辦視圖數據需要

  1. 顯示和
  2. 後回到控制器

希望這有助於。

相關問題