C# ViewData选定项的MVC DropDownList

C# ViewData选定项的MVC DropDownList,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我正在尝试将下拉列表中的选定值设置为默认值3600(如果该值为0)。不幸的是,下拉列表默认为第一个选项。我相信选择失败,因为列表中没有与0匹配的内容。这是我的密码: 控制器方法: public void GetTaskInterval(JMASettings model) { IList<SelectListItem> ilSelectList = new List<SelectListItem>(); Dictionary

我正在尝试将下拉列表中的选定值设置为默认值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;
    }
public void GetTaskInterval(JMASettings模型)
{
IList ilSelectList=新列表();
Dictionary secondsDictionary=新字典();
第二个数字。添加(“每三十分钟”,“1800”);
添加(“每小时”、“3600”);
secondsDictionary.Add(“每三小时”,“10800”);
第二个数字。添加(“每天”,“86400”);
foreach(secondsDictionary中的KeyValuePair对)
{
SelectListItem=新建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(项目);
}
ViewData[“TaskInterval”]=ilSelectList;
}
.cshtml

@Html.DropDownListFor(model => model.JMASettings.TaskInterval, (IEnumerable<SelectListItem>)ViewData["TaskInterval"])
@Html.DropDownListFor(model=>model.JMASettings.TaskInterval,(IEnumerable)ViewData[“TaskInterval”])

如果要使用
DropDownListFor()
helper设置默认值,您应该了解,在您的情况下,它是第一个参数
model.JMASettings.TaskInterval
的相关值


因此,您只需检查您是否在
控制器中为该模型属性设置了正确的值

使用
选择列表
并将
IEnumerable
放入其中:

        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);
默认值已设置为
3600
,但您可以更改它


祝你好运!:)

我决定使用Html.DropDownList(“JMASettings.TaskInterval”)。当您使用视图模型且存在子类时,必须先插入名称,然后再插入句点。@Joseph Anderson这也是可以接受的,但我建议您使用始终严格元组的方法。因为它将更容易改变模型,从而在将来维护您的项目。
@Html.DropDownListFor(model => model.JMASettings.TaskInterval, itemlist , "Select one")