zoukankan      html  css  js  c++  java
  • C# 枚举转换selectlistitem 及 MVC @Html.DropDownListFor() 调用详细


     

    枚举转换方法

            /// <summary>
            /// 根据枚举返回 List<SelectListItem>
            /// </summary>
            /// <param name="enumType"></param>
            /// <param name="withEmpty">true ---请选择--- </param>
            /// <param name="topValue">如果值不为0 则按枚举值选择</param>
            /// <returns></returns>
            public static List<SelectListItem> GetEnumDataSource(Type enumType, bool withEmpty, int topValue = 0)
            {
                List<SelectListItem> list = new List<SelectListItem>();
    
                if (withEmpty)
                {
                    list.Add(new SelectListItem { Value = topValue.ToString(), Text = "--请选择--", Selected = true });
                }
    
                FieldInfo[] fields = enumType.GetFields();
                foreach (FieldInfo item in fields)
                {
                    if (!item.FieldType.IsEnum)
                        continue;
                    int value = (int)item.GetValue(null);
                    if (value < 0)
                        continue;
                    string text = string.Empty;
                    object[] attrs = item.GetCustomAttributes(false);
                    foreach (object attr in attrs)
                    {
                        DescriptionAttribute des = attr as DescriptionAttribute;
                        if (des == null)
                        {
                            continue;
                        }
                        else
                        {
                            text = des.Description;
                        }
                    }
                    if (topValue == value)
                    {
                        list.Add(new SelectListItem { Value = value.ToString(), Text = text, Selected = true });
                    }
                    else
                    {
                        list.Add(new SelectListItem { Value = value.ToString(), Text = text });
                    }
                   
                }
    
                return list;
            }
    View Code

    Controller:

     var selectLists = EnumExtension.GetEnumDataSource(typeof(UserType), false, (int)result.Item.RoleId);
                    TempData["RoleSalesList"] = selectLists;
    View Code
    View
    @Html.DropDownListFor(model => model.RoleId , TempData["RoleSalesList"] as IEnumerable< SelectListItem>, new { @class = "form-control" } )
  • 相关阅读:
    bzoj4821
    bzoj2434
    第二阶段团队项目冲刺站立会议(五)
    第二阶段团队项目冲刺站立会议(四)
    第二阶段团队项目冲刺站立会议(三)
    小水王
    第二阶段团队项目冲刺站立会议(二)
    梦断代码阅读笔记02
    第二阶段团队项目冲刺站立会议(一)
    梦断代码阅读笔记01
  • 原文地址:https://www.cnblogs.com/DataBase-123/p/11044937.html
Copyright © 2011-2022 走看看