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了
posted @ 2008-11-12 09:47  重典  阅读(4215)  评论(4编辑  收藏  举报