微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC 2-从字典中填充下拉列表

如何解决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 举报,一经查实,本站将立刻删除。