我试图将下拉列表的选定值默认为3600,如果值为0.不幸的是,下拉默认为第一个选项。我相信选择失败,因为列表中没有任何内容匹配0.这是我的代码:
控制器方法:
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"])
答案 0 :(得分:1)
如果您想使用DropDownListFor()
帮助器设置默认值,您应该了解它是您的情况下第一个参数model.JMASettings.TaskInterval
的尊重值。
因此,您应该检查是否在Controller
。
答案 1 :(得分:1)
使用SelectList
并将IEnumerable<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");
var itemlist = new SelectList(secondsDictionary, "Key" , "Value", 3600);
并在您看来:
@Html.DropDownListFor(model => model.JMASettings.TaskInterval, itemlist , "Select one")
默认值已设置为3600
,但您可以更改它。
上帝运气!:)