如何解决ASP.NET MVC 2-从字典中填充下拉列表
|| 我正在尝试从Dictionary {string,string}中填充MVC 2中的下拉列表。 我在下面的代码不太正确... 国家是字典。救命<tr>
<td class=\"formtext\">
<%: Html.LabelFor(m => m.State)%> <strong>*</strong>
</td>
<td align=\"left\">
<%= Html.DropDownList(\"statesDropDown\",null,new { @class = \"ddlAttributeGroups\" })%>
</td>
</tr>
动作结果:
var states = new States().GetStates();
var statesDropDown = new SelectList(states,states.Keys.ToString(),states.Values.ToString());
ViewData[\"statesDropDown\"] = statesDropDown;
解决方法
为什么要使用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\" }
) %>
看看有多容易?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。