我需要在頁面上一個DropDownList,所以我嘗試這樣:Html.DropDownListFor()更改ASP.NET中的MVC SelectListItems
操作:
[HttpGet]
public ActionResult GetPoint() {
...
List<SelectListItem> zooms = new List<SelectListItem>();
for (int i = 0; i <= 21; i++) {
if (i == 9)
zooms.Add(new SelectListItem() { Selected = true, Text = i.ToString(), Value = i.ToString() });
else
zooms.Add(new SelectListItem() { Selected = false, Text = i.ToString(), Value = i.ToString() });
}
model.myselectlist = zooms;
...
return View(model);
}
,並考慮:
@Html.DropDownListFor(model => model.Zoom, Model.myselectlist , new { @class = "dropdown" })
因此,正如我所料,我們有一個DropDownList與9
是選定的項目。
但在同一視圖我需要另一個下拉所以這是我實現:
[HttpGet]
public ActionResult GetPoint() {
...
List<SelectListItem> places = new List<SelectListItem>();
places.Add(new SelectListItem() { Text = "NY", Value = "NY", Selected = false });
places.Add(new SelectListItem() { Text = "CA", Value = "CA", Selected = false });
places.Add(new SelectListItem() { Text = "TX", Value = "TX", Selected = false });
places.Add(new SelectListItem() { Text = "NH", Value = "NH", Selected = true });
places.Add(new SelectListItem() { Text = "NV", Value = "NV", Selected = false });
model.myselectlistII = places;
...
return View(model);
}
,並鑑於我:
@Html.DropDownListFor(model => model.Place, Model.myselectlistII , new { @class = "dropdown" })
所以你看我有一個列表的NH
物品有selected = true
。
而且我期望一個下拉列表,NH
選擇,但沒有發生,並總是選擇第一個項目。
鑑於我有一個奇怪的行爲,我調試代碼在行動結束,並在視圖頁面@Html.DropDownListFor
行的開始,每一個事情是確定的,但此行後,我再次檢查Model.myselectlistII
所選擇的項目有改變了,所有物品都有false
的選擇屬性,我不明白髮生了什麼?哪裏有問題?爲什麼第一個DropDownFor
沒有改變任何東西,但第二個改變我的列表?你的建議是什麼?
你給模型字段'Place'設置了任何值(例如,在構造函數或其他地方)?如果是這樣的話,它會覆蓋你的列表中的'Selected'字段... –
@SamuelCaillerie你的權利,其實我沒有設置任何東西,我必須設置默認值。 – Saeid
@SamuelCaillerie所以請張貼你的答案,爲下一步提及 – Saeid