选择选定值我有一个enum
它看起来像在下拉列表中
public enum Department
{
Admin,
HR,
Marketing,
Sales
}
从这个我想在控制器中创建一个下拉列表,我不喜欢它
public SelectList GetDepartmentDropDownList(string departmentName = null)
{
var departments = Enum.GetValues(typeof(Department));
SelectList ddl = new SelectList(departments);
return ddl;
}
这工作正常。但正如你所看到的,我可以传递选项参数。当下拉值被保存到数据库并且用户回来编辑该部分时,将传入此可选参数。我试图实现的是用户最初选择的任何内容,当他们回到编辑屏幕时,选择特定项目,即,如果他们选择HR
,则他们应该选择HR
。
如果我做new SelectList(departments, departmentName, departmentName);
我得到以下错误:
DataBinding: Enums.Department' does not contain a property with the name 'HR'
有人建议如何实现这一目标吧。
在我使用的Html.DropDownListFor()
使视图
@Html.DropDownListFor(m => m.Department, Model.DepartmentDdl, "Please select a Department", new { @class = "form-control", @required = "required" })
在我的模型的属性是
public IEnumerable<SelectListItem> DepartmentDdl { get; set; }
和Controller创建动作我做
model.DepartmentDdl = GetDepartmentDropDownList();
而且在控制器编辑动作中,我做了
model.DepartmentDdl = GetDepartmentDropDownList(departmentName); //department name here is read from the db
它的绑定的属性值决定了选择的内容。显示你的视图和你绑定的属性(你需要将它设置在模型中,然后传递给视图) –
只需在GET方法中将'Department'的值设置为'Department.HR',它将会选中(在'GetDepartmentDropDownList()'方法中你的参数没有意义) –
可能重复[SO答案](https://stackoverflow.com/questions/21878673/html-enumdropdowndownlistfor-showing-a-default-text) ? –