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

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

變淡的屬性爲枚舉,給出枚舉類型,給出默認選擇的下拉列表內容。 express

這樣先後臺數據綁定, this

程序員不再用擔憂枚舉下拉列表的數據綁定了。 spa

 

至此給你們提供一個思路 。 code

忘你們發散思惟集思廣益。 htm

 

休息一會,養養眼!blog

相關文章
相關標籤/搜索