Asp.net Mvc Enum 擴充套件
阿新 • • 發佈:2018-12-27
消失月餘,擔心文筆生疏,今作簡單一篇小文試手。
一直以來都覺得enum、struct以及class是程式設計的基礎結構。
我們通常意圖用列舉來表示一些名稱的值屬性。有的時候用Enum來填充DropDownList也算是不錯的選擇。
假設我們有一個enum:
public enum Role{ User = 0, Admin = 1024 }
我們想要實現如此效果:
因為enum本身並沒有IEnumerable介面,所以不能直接使用new SelectList(Role);來將之填充DropDownList。
但是我們可以寫一個靜態方法將之轉為IEnumerable。
public class EnumExt{ static public List<ListItem> ToListItem<T>(){ List<ListItem> li = new List<ListItem>(); foreach (int s in Enum.GetValues(typeof(T))){ li.Add(new ListItem{ Value = s.ToString(), Text = Enum.GetName(typeof (T), s) } ); } returnli; } }
View檔案中我們加入以下helper:
<%=Html.DropDownList("enumlist") %>
然後我們在Controller的action中寫如下繫結即可
public ActionResult Index()這樣我們就可以實現將Enum繫結在DropDownList了
{
ViewData["enumlist"] = new SelectList(EnumExt.ToListItem<Role>(),"value","text");
return View();
}