Enum简单例子DropdownList

借鉴:http://www.cnblogs.com/suizhikuo/archive/2013/06/07/3125225.html

vs2012 mvc4

最终效果:

1、建立mvc4 Internet应用程序

2、Models下建立Product.cs类

 public class Product
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int TypeId { get; set; }

    }

    public enum TypeName
    {
        糖果类,
        干果类,
        水果类
    }

    public class EnumExt 
    { 
        public static 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; 
        } 
    }

  3、在AccountModels.cs下 数据库上下文UsersContext类中添加实体集集合

          

            public DbSet<Product> Products { get; set; }

4、重新生成解决方案

5、添加控制器ProductController

6、ProductController.cs下 Create方法 ,添加

 public ActionResult Create()
        {
            ViewBag.TypeId = new SelectList(EnumExt.ToListItem<TypeName>(), "Value", "Text");
            return View();
        }

 Edit方法 ,添加

 public ActionResult Edit(int id = 0)
        {
            Product product = db.Products.Find(id);
            ViewBag.TypeId = new SelectList(EnumExt.ToListItem<TypeName>(), "Value", "Text",product.TypeId);
            if (product == null)
            {
                return HttpNotFound();
            }
            return View(product);
        }

7、视图页面Create修改

@Html.EditorFor(model => model.TypeId) 修改为

  @Html.DropDownList("TypeId")

视图页面Edit修改

@Html.EditorFor(model => model.TypeId) 修改为

  @Html.DropDownList("TypeId")

视图页面Index 修改

 @Html.DisplayFor(modelItem => item.TypeId)修改为

 @Enum.GetName(typeof(MvcApplication2.Models.TypeName),item.TypeId)

8、运行 添加数据 查看

 

源代码:http://pan.baidu.com/s/1i3xBIF7

 

后来发现:

foreach (int s in Enum.GetValues(typeof(T))) 此处若 int s写为 var s ,得到的序列值和文本全是文字了,不知原因 注意