首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用HTML.DisplayFor时,我可以将不同的模型传递给我的网格吗?

问在使用HTML.DisplayFor时,我可以将不同的模型传递给我的网格吗?
EN

Stack Overflow用户
提问于 2012-08-14 07:34:14
回答 1查看 309关注 0票数 0

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

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

代码语言:javascript
复制
IEnumerable<Question.Grid>

然后,在我的视图中,我有以下代码来打印网格表的细节行:

代码语言:javascript
复制
<tbody class="grid">
@if (Model != null) {
  foreach (var item in Model) {
    @Html.DisplayFor(model => item, "QuestionDetail")
  }
}
</tbody>

每条网格线都有一个status下拉列表,我希望将该下拉列表的数据(每行都相同)传递给QuestionDetail视图。发送此附加信息的最佳方式是什么,以便在我看来,我可以拥有以下内容:

代码语言:javascript
复制
@Html.DropDownList("Question.Status", Status, new { id = "StatusID"})
EN

回答 1

Stack Overflow用户

发布于 2012-08-14 10:15:41

首先,不要传递视图模型的IENumerable。而是定义一个属性为IEnumerable的对象,如下所示:

代码语言:javascript
复制
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. display和
  2. post返回到控制器

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11943736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档