Asp.net MVC SelectList - 设置值

时间:2014-09-15 19:24:13

标签: c# asp.net-mvc

如何在选择列表中设置所选值。 例如,假设我正在显示一个现有的客户端,并且在表单上有一个“性别”的下拉列表,我希望选择“男性”(如果那个保存在数据库中的那个)我该怎么做? / p>

当我正在构建我的模型时,我正在做类似

的事情
public ActionResult Edit(string id)
        {
 var client= _clientService.FindById(id);
            var model = new ViewModels.Client()
            {
GenderId= client.GenderId,
GenderList= CreateGenderList(GenderId)
};
}

private IEnumerable<SelectListItem> CreateGenderList(int gId)
        {

            var list = Enum.GetValues(typeof(DomainObjects.Client.GenderList))
                .Cast<DomainObjects.Client.GenderList>()
                .Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString() });
//Need to set the selected value, how?


            return list.ToList();


        }

先谢谢你。

2 个答案:

答案 0 :(得分:0)

您应该使用额外的SelectListItem.Selected属性,并将其设置为true。例如:

var list = Enum.GetValues(typeof(DomainObjects.Client.GenderList))
            .Cast<DomainObjects.Client.GenderList>()
            .Select(v => new SelectListItem {
    Text = v.ToString(),
    Value = ((int)v).ToString()});

var maleGenderItem = list.Single(x => x.Text == "Male");
maleGenderItem.Selected = true;

答案 1 :(得分:0)

这样做了

var list = Enum.GetValues(typeof(DomainObjects.Client.GenderList))
                .Cast<DomainObjects.Client.GenderList>()
                .Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString(), Selected = gName.ToString() == ((int)v).ToString() });

            return list.ToList();