2012-08-13 30 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. 后回到控制器

希望这有助于。

相关问题