簡體   English   中英

在下拉列表中選擇選定的值

[英]Select selected value in drop down list

我有一個看起來像的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); 我收到以下錯誤:

數據綁定: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

模型綁定通過綁定到屬性值來起作用。 例如,您需要在GET方法中設置屬性Department的值,然后再將模型傳遞給視圖。

var model = new YourModel
{
    Department = Department.HR,
    DepartmentDdl = GetDepartmentDropDownList()
};
return View(model);

請注意,在GetDepartmentDropDownList()方法中不需要您的參數。 在內部, DropDownListFor()方法將構建新的IEnumerable<SelectListItem>並根據綁定到的屬性設置每個SelectListItemSelected值(即,將其忽略在SelectList構造函數中進行設置)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM