MVC3: Bind Enum To DropDownList ?
2013-04-25 09:20
99 查看
0. 准备测试数据
0.1 : 枚举
0.2 : 对应实体类及表sql
0.3 在Controller 文件夹上生成强类型(Test)的读写控制器及视图. (自动生成这些,我们的测试工作就很轻松了)
1. 写一个扩展方法,放在静态的工具类中。
2. 改写Action
3. 改写View 中的Edit.cshtml
4. 运行 /Test/Edit/1 看看效果吧。
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 )
4. 运行 /Test/Edit/1 看看效果吧。
相关文章推荐
- 枚举生成MVC3: Bind Enum To DropDownList ?-java教程
- Bind Enum To DropDownList ?
- How do I bind the values of an enum to a ComboBox?
- [Tips]解决make_sock: could not bind to address 0.0.0.0:XXXX
- 【angular】ngModel遇见的坑:Can't bind to 'ngModel' since it isn't a known property of 'input'
- Trace event to check explain plan + bind variable peeking + hints + CBO environment
- 【angular】ngModel遇见的坑:Can't bind to 'ngModel' since it isn't a known property of 'input'
- apahce 启动错误make_sock:could not bind to address [::]:80
- 如何在Vim中绑定滚动?(How to bind Scroll in Vim?)
- [原] XAF How to bind a stored procedure to a ListView in XAF
- 绑定Enum到DropDownList控件的方法
- (98)Address already in use: make_sock: could not bind to address [::]:80
- Enum扩展及MVC中DropDownListFor扩展方法的使用
- java.lang.SecurityException: Not allowed to bind to service Intent { act=com.android.testAIDLServic
- #455 – Using ItemContainerStyle to Bind Data Elements in a Collection to a Grid
- Broadcastreceiver components are not allowed to bind to services in android
- Failed to start jmx connector: Cannot bind to URL[rmi://localhost:1099/jmxrmi]
- Permission denied: make_sock: could not bind to address处理
- Enum to String and vice versa in C++
- Hibernate错误:Could not bind factory to JNDI