【问题标题】:Asp.net MVC SelectList - Set ValueAsp.net MVC SelectList - 设置值
【发布时间】:2014-11-09 09:58:36
【问题描述】:

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

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

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();


        }

在此先感谢您。

【问题讨论】:

  • 如何在列表中生成下拉菜单?如果GenderId 的值与您的某个选项的值匹配,则默认选择它

标签: c# asp.net-mvc


【解决方案1】:

您应该使用附加的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;

【讨论】:

  • Holf,这实际上并没有更新现有列表以标记 selected = true
【解决方案2】:

做到了

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多