0

我有一个显示问题网格/表格的应用程序,每个问题都有一个状态下拉列表。大约有 1-200 个问题,每个状态下拉菜单有大约 50 个选项,这些选项对于网格的每一行都是相同的。

我的控制器将以下模型传递给视图:

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"})
4

1 回答 1

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 中随心所欲地添加任何附加信息。如果它更具体到问题,请将其放在那里并在包含该状态ID 的列表中的每个模型中享受您的项目。

将其视为一个容器,用于保存视图所需的数据

  1. 显示和
  2. 回发给控制器

希望这可以帮助。

于 2012-08-14T02:15:41.030 回答