我很难对性别下拉进行编码,因为它只有两个值,它永远不会被更改。保存数据库。
如何在“编辑”视图中显示所选值,以便用户可以查看选择了哪个性别并轻松更新。
创建视图
@Html.DropDownList("Departments", new List<SelectListItem>
{
new SelectListItem { Text = "Male", Value = "1"},
new SelectListItem { Text = "Female", Value = "2"}
}, "Select")
答案 0 :(得分:1)
为什么要将1
或2
的值绑定到名为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)