我有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;
}
哪个工作正常。但正如你所看到的,我可以传递opitional参数。当下拉值保存到数据库并且用户返回编辑该部分时,将传递此可选参数。我想要实现的是用户最初选择的任何内容,当他们返回编辑屏幕时选择特定项目,即如果他们选择HR
时应该选择HR
。
如果我new SelectList(departments, departmentName, departmentName);
我收到以下错误:
DataBinding:Enums.Department'不包含名为'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; }
在控制器中创建动作
model.DepartmentDdl = GetDepartmentDropDownList();
在控制器编辑操作中我做
model.DepartmentDdl = GetDepartmentDropDownList(departmentName); //department name here is read from the db
答案 0 :(得分:1)
模型绑定通过绑定到属性的值来工作。在将模型传递给视图之前,需要在GET方法中设置属性application [
port1[
config[
config.php
-> $config['index_page'] = ''; //set blank
]
]
port2[
config[
config.php
-> $config['index_page'] = ''; //set blank
]
]
port3[
config[
config.php
-> $config['index_page'] = ''; //set blank
]
]
]
//root directory is port 1
index.php // ($application_folder = 'application/port1';)//set this path
的值,例如
Department
请注意,var model = new YourModel
{
Department = Department.HR,
DepartmentDdl = GetDepartmentDropDownList()
};
return View(model);
方法中不需要您的参数。在内部,GetDepartmentDropDownList()
方法会构建一个新的DropDownListFor()
,并根据您绑定的属性设置每个IEnumerable<SelectListItem>
的{{1}}值(即在{{1}中设置它}构造函数被忽略)。