天天看點

Mvc HtmlHelper 方法擴充 DropDownListFor

項目中遇到表單送出中遇到枚舉,忽然想起1年前的1小段代碼結合HtmlHelper在擴充一下 便于開發中使用


      
public static class HtmlHelperExtensions {
     public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Enum enumType, string defualtName)
        {
            IList<SelectListItem> selectList = enumType.ToSelectListItem(defualtName);
            return SelectExtensions.DropDownListFor<TModel, TProperty>(htmlHelper, expression, selectList, (string)null, (IDictionary<string, object>)null);
        }
}      
public static class ExSelectListItem
    {
        public static List<SelectListItem> ToSelectListItem(this Enum valueEnum)
        {
            return (from int value in Enum.GetValues(valueEnum.GetType())
                    select new SelectListItem
                    {
                        Text = Enum.GetName(valueEnum.GetType(), value),
                        Value = value.ToString()
                    }).ToList();
        }

        public static List<SelectListItem> ToSelectListItem(this Enum valueEnum, string selectName)
        {
            return (from int value in Enum.GetValues(valueEnum.GetType())
                    select new SelectListItem
                    {
                        Text = Enum.GetName(valueEnum.GetType(), value),
                        Value =value.ToString(),
                        Selected = Enum.GetName(valueEnum.GetType(), value) == selectName ? true : false
                    }).ToList();
        }
    }
      

  通過這兩個擴充我們将會有如下的前台處理操作 

 @Html.DropDownListFor(m => m.ArrtPublish.Visibility, PublishType.Public, "Public")

變淡的屬性為枚舉,給出枚舉類型,給出預設選擇的下拉清單内容。 

這樣前背景資料綁定, 

程式員再也不用擔心枚舉下拉清單的資料綁定了。 

至此給大家提供一個思路 。 

忘大家發散思維集思廣益。 

休息一會,養養眼!

Mvc HtmlHelper 方法擴充 DropDownListFor

繼續閱讀