• 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" } )
  • 相关阅读:
    display、box-sizing,position有哪些值?
    css伪类与伪元素
    HTML基础(一)——一般标签、常用标签和表格
    C#处理猜拳问题(非窗体)
    C#语言基础——结构体和枚举类型
    C#语言基础-类——string增加内容
    C#解决验证码问题
    C#ArrayList集合——小例题
    C#语言基础——特殊集合
    http请求访问响应慢问题解决的基本思路
  • 原文地址:https://www.cnblogs.com/DataBase-123/p/11044937.html
Copyright © 2020-2023  润新知