我正在尝试从Dictionary {string,string}中弹出MVC 2中的下拉列表。 我的代码如下,那不太正确......
州是字典。帮助
<tr>
<td class="formtext">
<%: Html.LabelFor(m => m.State)%> <strong>*</strong>
</td>
<td align="left">
<%= Html.DropDownList("statesDropDown", null, null, new { @class = "ddlAttributeGroups" })%>
</td>
</tr>
的ActionResult:
var states = new States().GetStates();
var statesDropDown = new SelectList(states, states.Keys.ToString(), states.Values.ToString());
ViewData["statesDropDown"] = statesDropDown;
答案 0 :(得分:1)
为什么使用ViewData而不是视图模型和强类型视图,这将使您的代码更清晰/更安全/启用Intellisense,...?你为什么使用词典而不是一些更简单的类型?例如视图模型:
public class MyViewModel
{
public string SelectedState { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
}
和控制器:
public ActionResult Foo()
{
var states = new States().GetStates();
var model = new MyViewModel
{
States = states.Select(x => new SelectListItem
{
Value = x.Key,
Text = x.Value
})
};
return View(model);
}
和强类型视图:
<%= Html.DropDownList(
x => x.SelectedState,
new SelectList(Model.States, "Value", "Text"),
null,
new { @class = "ddlAttributeGroups" }
) %>
看看它有多容易?