2015-07-12 74 views
0

我想將下拉列表的選定值設置爲默認值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"]) 

回答

1

如果你想設置的默認值與DropDownListFor()幫手,你應該明白,在你的情況下,它是第一個參數model.JMASettings.TaskInterval的尊重值。

因此,您應該檢查一下,您是否在Controller中爲此模型屬性設置了正確的值。

+0

我決定使用Html.DropDownList(「JMASettings.TaskInterval」)。當您使用視圖模型並且存在子類時,您必須插入名稱,然後插入句點。 –

+0

@JosephAnderson that'a也是可以接受的,但我建議你總是使用嚴格的方法。因此,更改模型會更容易,因此將來可以維護您的項目。 –

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,但你可以改變它。

上帝保佑!:)

相關問題