发一下牢骚和主题无关:
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 )
4. 运行 /Test/Edit/1 看看果效吧。
文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)