消失月余,担心文笔生疏,今作简单一篇小文试手。
一直以来都觉得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)
}
);
}
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了