1. 程式人生 > >Asp.net Mvc Enum 擴充套件

Asp.net Mvc Enum 擴充套件

消失月餘,擔心文筆生疏,今作簡單一篇小文試手。

一直以來都覺得enum、struct以及class是程式設計的基礎結構。

我們通常意圖用列舉來表示一些名稱的值屬性。有的時候用Enum來填充DropDownList也算是不錯的選擇。

假設我們有一個enum:

public enum Role{
User = 0,
Admin = 1024
}

我們想要實現如此效果:

image

因為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)
			}
			);
		}
		return
li; } }

View檔案中我們加入以下helper:

    <%=Html.DropDownList("enumlist") %>

然後我們在Controller的action中寫如下繫結即可

        public ActionResult Index()
{
ViewData["enumlist"] = new SelectList(EnumExt.ToListItem<Role>(),"value","text");
return View();
}
這樣我們就可以實現將Enum繫結在DropDownList了