MVC操作 DropDownList

1、枚舉轉下拉框

public static SelectList ToSelectList<TEnum>(this TEnum enumObj, 
            bool markCurrentAsSelected = true, int[] valuesToExclude = null) where TEnum : struct
        {
            if (!typeof(TEnum).IsEnum) throw new ArgumentException("An Enumeration type is required.", "enumObj");

            var localizationService = EngineContext.Current.Resolve<ILocalizationService>();
            var workContext = EngineContext.Current.Resolve<IWorkContext>();

            var values = from TEnum enumValue in Enum.GetValues(typeof(TEnum))
                         where valuesToExclude == null || !valuesToExclude.Contains(Convert.ToInt32(enumValue))
                         select new { ID = Convert.ToInt32(enumValue), Name = enumValue.GetLocalizedEnum(localizationService, workContext) };
            object selectedValue = null;
            if (markCurrentAsSelected)
                selectedValue = Convert.ToInt32(enumObj);
            return new SelectList(values, "ID", "Name", selectedValue);
        }


        public static SelectList ToSelectList<TEnum>(
            this TEnum enumObj,
            bool markCurrentAsSelected = true,
            string Value = "Id",
            string Name = "Name")
            where TEnum : struct
        {
            if (!typeof(TEnum).IsEnum)
                throw new ArgumentException("An Enumeration type is required.", "enumObj");

            Func<object, string> GetDisplayName = o =>
            {
                var result = null as string;
                var display = o.GetType().
                    GetMember(o.ToString()).
                    First().GetCustomAttributes(false).
                    OfType<DisplayAttribute>().
                    LastOrDefault();
                if (display != null)
                {
                    result = display.GetName();
                }
                return result ?? o.ToString();
            };

            var values = from TEnum enumValue in Enum.GetValues(typeof(TEnum))
                         select new { ID = Convert.ToInt32(enumValue), Name = GetDisplayName(enumValue) };
            object selectedValue = null;
            if (markCurrentAsSelected)
                selectedValue = Convert.ToInt32(enumObj);
            return new SelectList(values, Value, Name, selectedValue);
        }



2、後臺代碼

var subList = FeeType.充值.ToSelectList(false);
            ViewData["FeeType"] = subList;
            if (ajaxPageOfSearch.FeeType != null && ajaxPageOfSearch.FeeType > 0)
            {
                ViewData["FeeType"] = ((FeeType)ajaxPageOfSearch.FeeType).ToSelectList(true);
            }

3、前臺使用

@Html.DropDownList("FeeType",null,"請選擇資金類型",new { id = "FeeType", Name = "AjaxPageOfSearch.FeeType" })



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章