我想將下拉列表的選定值設置爲默認值3600,如果值爲0.不幸的是,下拉列表默認爲第一個選項。我相信,因爲沒有在列表中匹配0。這裏是我的代碼的選擇失敗:MVC DropDownListFor ViewData所選項目
控制器的方法:
public void GetTaskInterval(JMASettings model)
{
IList<SelectListItem> ilSelectList = new List<SelectListItem>();
Dictionary<string, string> secondsDictionary = new Dictionary<string, string>();
secondsDictionary.Add("Every Thirty Minutes", "1800");
secondsDictionary.Add("Every Hour", "3600");
secondsDictionary.Add("Every Three Hours", "10800");
secondsDictionary.Add("Every Day", "86400");
foreach (KeyValuePair<string, string> pair in secondsDictionary)
{
SelectListItem item = new SelectListItem();
item.Text = pair.Key;
item.Value = pair.Value;
if (model.TaskInterval == 0 && item.Value.ToString() == "3600")
item.Selected = true;
if (item.Value == model.TaskInterval.ToString())
item.Selected = true;
ilSelectList.Add(item);
}
ViewData["TaskInterval"] = ilSelectList;
}
.cshtml
@Html.DropDownListFor(model => model.JMASettings.TaskInterval, (IEnumerable<SelectListItem>)ViewData["TaskInterval"])
我決定使用Html.DropDownList(「JMASettings.TaskInterval」)。當您使用視圖模型並且存在子類時,您必須插入名稱,然後插入句點。 –
@JosephAnderson that'a也是可以接受的,但我建議你總是使用嚴格的方法。因此,更改模型會更容易,因此將來可以維護您的項目。 –