MVC DropDownListFor ViewData被选中的项目
本文关键字:项目 DropDownListFor ViewData MVC | 更新日期: 2023-09-27 18:02:16
我试图让下拉列表的选定值默认为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"])
如果您想使用DropDownListFor()
helper设置默认值,您应该理解在您的情况下,它是第一个参数model.JMASettings.TaskInterval
的尊重值。
所以你应该检查你在Controller
中为这个模型属性设置了正确的值
使用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
,但您可以更改它。