Html.DropDownListFor的用法總結


在ASP.NET MVC中可以用DropDownListFor的方式來讓用戶選擇已定列表中的一個數值。

注:重點是要將DropDownList的數據源轉換成IEnumerable<SelectListItem>類型的結合;

  SelectListItem類在System.Web.MVC命名空間下,其成員如下:

  • public bool Disabled { get; set; }
  • public SelectListGroup Group { get; set; }
  • public bool Selected { get; set; }
  • public string Text { get; set; }
  • public string Value { get; set; }
1 //處理State,將IEnumerable<State>集合轉換為IEnumerable<SelectListItem>集合
2 public IEnumerable<SelectListItem> GetStates()
3 {
4         return _usStateService.GetStates().OrderBy(c => c.StateAbbreviation).Select(state => new SelectListItem
5                                                                {
6                                                                    Text = state.StateAbbreviation,
7                                                                    Value = state.StateAbbreviation
8                                                                });
9 }

 

使用如下示例:

  • 首先我們要定義一個Model,用戶在DropDownList中選擇指定的值付給屬性ReadyTimeHour  
1 public class EricSunModel
2 {
3     public string ReadyTimeHour { get; set; }
4 }
  • Model定義完畢之后,接下來處理Controller的邏輯
  • 這里使用ViewData來記錄DropDownList中所要顯示的所有列表數值
 1 public ActionResult EricSunAction()
 2 {
 3     EricSunModel esModel = new EricSunModel();
 4     esModel.ReadyTimeHour = "00";
 5 
 6     GenerateReadyTimeViewData();
 7 
 8     return View(esModel);
 9 }
10 
11 private void GenerateReadyTimeViewData()
12 {
13     ViewData["HourList"] = GetTimeHourList();
14 }
15 
16 //這里要對集合進行處理,因為第二個參數必須是IEnumerable<SelectListItem> 類型的集合
17 private List<SelectListItem> GetTimeHourList()
18 {
19     List<SelectListItem> hourList = new List<SelectListItem>();
20 
21     for (int i = 0; i < 24; i++)
22     {
23         if (i < 10)
24         {
25             hourList.Add(new SelectListItem { Text = "0" + i.ToString(), Value = "0" + i.ToString() });
26         }
27         else
28         {
29             hourList.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
30         }
31     }
32 
33     return hourList;
34 }
  • 接下來我們在View中可以用下面一行代碼來綁定DropDownList
  • 注:第一個參數為綁定Model中的屬性,即-->要為此屬性賦值
  • 注:第二個參數為DropDownList的所有數據源,並且必須是IEnumerable<SelectListItem>類型的集合

1 @Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>)
  • 效果如下

  • 如果我們想在DropDownList中的最頂端添加一個默認值的話,添加第三個參數
1 @Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>, "---Select---")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM