在MVC中更新时,在下拉列表中显示选定值

时间:2016-02-16 02:37:42

标签: c# asp.net-mvc-4

我很难对性别下拉进行编码,因为它只有两个值,它永远不会被更改。保存数据库。

如何在“编辑”视图中显示所选值,以便用户可以查看选择了哪个性别并轻松更新。

创建视图

@Html.DropDownList("Departments", new List<SelectListItem>
{
new SelectListItem { Text = "Male", Value = "1"},
new SelectListItem { Text = "Female", Value = "2"}
}, "Select")

1 个答案:

答案 0 :(得分:1)

为什么要将12的值绑定到名为Department的属性以表示值&#34;男性&#34;有点令人困惑。和&#34;女性&#34;。我假设你真的想要绑定一个名为Gender的属性。

理想情况下,该属性应为type string或枚举,以便将其存储为&#34; Male&#34;或&#34;女性&#34; (值&#34; 1&#34;或&#34; 2&#34;对其他任何人都没有多大意义。)

此外,您应该在控制器中生成SelectList并使用视图模型或ViewBag属性将其传递给视图(最好)。

public class PersonVM
    [Required(ErrorMessage = "Please select a Gender")]
    public string Gender { get; set; } // or use an enum
    public IEnumerable<SelectListItem> GenderList { get; set; }
}

在GET方法中

PersonVM model = new PersonVM()
{
    GenderList = new SelectList(new string[]{ "Male", "Female" }),
    Gender = // set this in an Edit method so the correct option is selected
}
// or if not using a view model - ViewBag.GenderList = new SelectList(new string[]{ "Male", "Female" });
return View(model);

并在视图中

@Html.DropDownListFor(m => m.Gender, Model.GenderList, "-select-")
// or if not using a view model - @Html.DropDownListFor(m => m.Gender, (SelectList)ViewBag.GenderList, "-select-")
@Html.ValidationMessageFor(m => m.Gender)
相关问题