//公共的方法//在每次需要展示下拉框的时候,需要调用一下这个方法 【数据源是DB数据库】privatevoid_ProductExtensions( BtDbContext _ctx ){#region 商品分类
List<SelectListItem> listProductTypes =new List<SelectListItem>();
listProductTypes.Add(newSelectListItem(){
Text ="商品分类",
Value ="0"});//直接查询数据库中的数据,将其绑定到list中
listProductTypes.AddRange(_ctx.ProductTypes.Select(t =>newSelectListItem(){
Text = t.TypeName,
Value = t.TypeId.ToString()}).ToList());
ViewData["ProductTypes"]= listProductTypes;#endregion}
//枚举的创建/// <summary>/// 本系统订单状态/// </summary>[Serializable][ProtoContract][Description("订单状态")]publicenum OrderStatus
{/// <summary>/// 全部/// </summary>[Description("全部")][ProtoEnum(Value =0)]
NoSetting =0,/// <summary>/// 未派单/// </summary>[Description("未派单")][ProtoEnum(Value =1)]
NoSendOrder =1,}//调用的方式同上,唯一不同的是数据源 这里使用的数据源是 来自枚举privatevoid_OrderExtensions(){#region 订单状态
Dictionary<string,int> dic =new Dictionary<string,int>();
dic =typeof(EnumHelper.OrderStatus).ToDictionary();//这个ToDictionary()是自己扩展的一个方法
List<SelectListItem> listOrderState =new List<SelectListItem>();
listOrderState.Add(newSelectListItem(){
Text ="订单状态",
Value =""});
foreach (var item in dic){
listOrderState.Add(newSelectListItem(){
Text = item.Key,
Value = item.Value.ToString()});}
ViewData["OrderStates"]= listOrderState;#endregion}
补充扩展方法:
publicstatic Dictionary<string,int>ToDictionary(this Type type){
Dictionary<string,int> dic =new Dictionary<string,int>();
foreach (var e in Enum.GetValues(type)){
var des = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute),false).FirstOrDefault<object>() as DescriptionAttribute;
string key = e.ToString();if(des != null){
key = des.Description;}
dic.Add(key,(int)e);}return dic;}