在ASP.Net MVC中设置下拉菜单的选定值

时间:2011-01-28 11:20:58

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 viewmodel

我有一个继承自ViewModel的ASP.Net MVC视图。 ViewModel包含模型中两个实体的数据:

public PaginatedList<Entry> Entries { get; private set; }
public SelectList ColumnValues { get; private set; }

这两个属性在视图上使用,该视图基于列表模板。 该列表遍历条目列表并为每个列表显示一个表行。在该行的一个表格单元格中,一个DropDownList是从ViewModel的 ColumnValues 中填充的。

我可以使用以下方法让DropDownList设置它的所选项目:

@Html.DropDownList("ColumnValue", Model.ColumnValues)

这将呈现页面,每个行中有一个DropDownList。但是,所选值始终设置为第一行的“ColumnValue”,对于所有行都是如此。

我将如何修改我的代码,以便DropDownList的选定值与每个个别条目的ColumnValue匹配。

目的是生成一种可编辑的数据网格,其中包含使用AJAX回发每行更改的链接。

3 个答案:

答案 0 :(得分:0)

我们假设ViewData["ColumnValue"] = "5"。现在,在ColumnValues选择列表中,您需要有一个值为“5”的项目,它将自动被选中。例如:

ColumnValues = new SelectList(new[] {
    new SelectListItem { Value = "1", Text = "Item 1" },
    new SelectListItem { Value = "2", Text = "Item 2" },
    new SelectListItem { Value = "3", Text = "Item 3" }
}, "Value", "Text");

然后ViewData["ColumnValue"] = "2"会自动预选第二项。

答案 1 :(得分:0)

在视图中使用DropDownListFor()并将 selectList 设置为以下作品:

new SelectList(Model.ColumnValues,"ColumnValue","ColumnValue", item.associatedField)

这似乎不是一种很好的做事方式,但它有效。这是目前最重要的事情。任何进一步的评论将不胜感激。

答案 2 :(得分:0)

您可以在Set Class Attribute for certain records of Dropdownlist in MVC4上的更新代码(更新代码 - 用于MyDropdownListFor)中指示创建自定义html帮助程序,并使用“Selected”属性作为Class属性。 希望这会有所帮助。