現在,我正在嘗試爲使用下拉列表的MVC應用程序創建編輯頁面,允許用戶編輯員工的位置。我考慮兩種情況:一種情況是員工沒有設置地點,另一種情況是員工已有指定地點。在第二種情況下,我希望編輯頁面中的下拉列表自動在列表中選擇當前位置。該列表已成功創建,但默認爲SelectList中的第一個值(本例中爲空字符串),而不是當前選定的值。這種情況下,控制器代碼如下:在MVC/EF應用程序中的DropDownList中未選擇任何項目
var pairs = db.Locations.Select(x => new { value = x.LocationID, text = x.City }).ToList();
pairs.Insert(0, (new {value = 0, text = ""}));
SelectList Locations = new SelectList(pairs,
"value", "text", pairs.First(x=> x.value == employee.Location.LocationID));
foreach (SelectListItem item in Locations)
{
item.Selected = false;
}
foreach (SelectListItem item in Locations)
{
if (item.Value == (employee.Location.LocationID.ToString()))
{
Debug.Print("Match Found");
item.Selected = true;
break;
}
}
ViewBag.Locations = Locations;
需要注意的是,現在,我明確地列舉在列表中,並作爲選擇標記所需的值。最初,我使用了帶有「selectedValue」參數的SelectList構造函數的重載,但是這也不起作用。還要注意print語句:在運行時,確實會打印該行,表示找到並標記了匹配的值。它只是不顯示在頁面上。
視圖中的代碼如下:
<div class="form-group">
@Html.Label("Location", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("location", ViewBag.Locations as IEnumerable<SelectListItem>)
</div>
</div>
有沒有辦法,我失去了一些東西?
謝謝!
這也許回答可以幫助你http://stackoverflow.com/questions/27297294/how -to-set-default-value-for-html-dropdownlistfor-in-mvc –
您是否試過只是在做: @ Html.DropDownList(「location」,ViewBag.Locations) –
您是否在使用模型?該模型是否有稱爲「位置」的字段?如果是這樣,那可能會導致這個問題。 –