发一下牢骚和主题无关:
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; }}
}/*
-- 对应SQLCREATE 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/1public 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,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)