在下拉列表中选择所选值

时间:2017-05-31 09:53:32

标签: c# asp.net-mvc enums

我有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

1 个答案:

答案 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}中设置它}构造函数被忽略)。