Bind Enum To DropDownList ?
2013-06-21 15:02
309 查看
0. 准备测试数据
0.1 : 枚举
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication.Models { public enum YesOrNo { 否 = 0, 是 = 1 } }
0.2 : 对应实体类及表sql
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; namespace MvcApplication.Models { public class Test { [Key] public int Id { get; set; } [Display(Name = "状态")] [Required(ErrorMessage = "状态不能为空.")] public int Status { get; set; } } } /* -- 对应SQL CREATE TABLE Test( Id INT PRIMARY KEY IDENTITY(1,1), [Status] INT ) go INSERT INTO Test VALUES(1) */
0.3 在Controller 文件夹上生成强类型(Test)的读写控制器及视图. (自动生成这些,我们的测试工作就很轻松了)
1. 写一个扩展方法,放在静态的工具类中。
/// <summary> /// 将枚举转换到Select的扩展方法 /// </summary> /// <typeparam name="TEnum">枚举类型</typeparam> /// <param name="enumObj">枚举对象</param> /// <returns>SelectList</returns> public static SelectList ToSelectList<TEnum>(this TEnum enumObj) { var values = from TEnum e in Enum.GetValues(typeof(TEnum)) select new { Id = Convert.ToInt32(e), Name = e.ToString() }; return new SelectList(values, "Id", "Name", Convert.ToInt32(enumObj)); }
2. 改写Action
// // GET: /Test/Edit/1 public ActionResult Edit(int id) { Test test = db.Test.Find(id); ViewBag.list = ((YesOrNo)test.Status).ToSelectList(); //ViewData["status"] = ((YesOrNo)test.Status).ToSelectList(); //不可以的 return View(test); }
3. 改写View 中的Edit.cshtml
@Html.DropDownListFor(model=> model.Status, ViewBag.list as SelectList )
本文转自:/article/2334519.html
相关文章推荐
- 枚举生成MVC3: Bind Enum To DropDownList ?-java教程
- MVC3: Bind Enum To DropDownList ?
- How do I bind the values of an enum to a ComboBox?
- How to cast enums which are using QFlags and QList?
- 解决nginx无法启动, bind() to 0.0.0.0:8080 failed的错误
- 解决在AS中使用Genymotion时发生error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:
- Failed to start jmx connector: Cannot bind to URL[rmi://localhost:1099/jmxrmi]
- [精华][转] setsockopt 的 SO_BINDTODEVICE 套接口选项
- apache启动报错(98)Address already in use: make_sock: could not bind to address [::]:80
- nginx: [emerg] bind() to 0.0.0.0:8100 failed (98: Address already in use)
- Linux教程之:Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
- java:java.sql.SQLException:Underflow Exception trying to bind 4.9E-324
- Enum绑定DropDownList方法
- How to bind ToolBar items
- nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决
- int 反射到未知的 Enum , 使用 Enum.ToObject
- javax.xml.bind.JAXBException: Unable to locate jaxb.properties for package
- vetur插件提示 [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives错误的解决办法
- Apache启动报错Address already in use: make_sock: could not bind to...
- Bind event to element using pure Javascript