当前位置:首页 > Web开发 > 正文

HtmlHelper扩展

2024-03-31 Web开发

1 public static class SelectExtensions 2 { 3 /// <summary> 4 /// @Html.EnumDropDownListFor(model => model.PermissionType) 5 /// </summary> 6 /// <typeparam></typeparam> 7 /// <typeparam></typeparam> 8 /// <param></param> 9 /// <param></param> 10 /// <returns></returns> 11 public static MvcHtmlString EnumCustomerDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression) where TEnum : struct 12 { 13 return EnumCustomerDropDownListFor(htmlHelper, expression, null); 14 } 15 /// <summary> 16 /// @Html.EnumDropDownListFor(model => model.PermissionType) 17 /// </summary> 18 /// <typeparam></typeparam> 19 /// <typeparam></typeparam> 20 /// <param></param> 21 /// <param></param> 22 /// <param></param> 23 /// <returns></returns> 24 public static MvcHtmlString EnumCustomerDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression, object htmlAttributes) where TEnum : struct 25 { 26 return EnumCustomerDropDownListFor(htmlHelper, expression, ((IDictionary<string, object>)HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))); 27 } 28 public static MvcHtmlString EnumCustomerDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression, IDictionary<string, object> htmlAttributes) where TEnum : struct 29 { 30 ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); 31 Type enumType = HtmlExtensions.GetNonNullableModelType(metadata); 32 33 StringBuilder buffter = new StringBuilder(""); 34 if (metadata.IsNullableValueType) 35 buffter.AppendFormat("\n<option value=\"0\" selected=\"selected\">请选择...</option>"); 36 var enumItems = Enum.GetValues(enumType); 37 foreach (var enumItem in enumItems) 38 { 39 string selected = enumItem.Equals(metadata.Model) ? " selected=\"selected\"" : ""; 40 buffter.Append($"\n<option value=\"{Convert.ToInt32(enumItem)}\" {2}>{((Enum)enumItem).GetText()}</option>"); 41 } 42 43 TagBuilder tagBuilder = new TagBuilder("select") 44 { 45 InnerHtml = buffter.ToString() 46 }; 47 tagBuilder.MergeAttributes<string, object>(htmlAttributes); 48 tagBuilder.GenerateId(metadata.PropertyName); 49 tagBuilder.MergeAttribute("name", metadata.PropertyName, true); 50 return new MvcHtmlString(tagBuilder.ToString()); 51 } 52 53 public static MvcHtmlString EnumDropDownList<TEnum>(this HtmlHelper htmlHelper, TEnum tEnum, string id, string name) where TEnum : struct 54 { 55 return EnumDropDownList(htmlHelper, tEnum, id, name, null); 56 } 57 public static MvcHtmlString EnumDropDownList<TEnum>(this HtmlHelper htmlHelper, TEnum tEnum, string id, string name, object htmlAttributes) where TEnum : struct 58 { 59 return EnumDropDownList(htmlHelper, tEnum, id, name, ((IDictionary<string, object>)HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))); 60 } 61 62 63 64 public static MvcHtmlString EnumDropDownList<TEnum>(this HtmlHelper htmlHelper, TEnum tEnum, string id, string name, IDictionary<string, object> htmlAttributes) where TEnum : struct 65 { 66 //获取所有枚举项 67 Array enumItems = Enum.GetValues(typeof(TEnum)); 68 StringBuilder buffer = new StringBuilder(); 69 string selected = string.Empty; 70 foreach (var enumItem in enumItems) 71 { 72 selected = enumItem.Equals(tEnum) ? "selected=\"selected\"" : ""; 73 buffer.Append($"<option value=\"{Convert.ToInt32(enumItem)}\" {selected}>{((Enum)enumItem).GetText()}</option>"); 74 } 75 TagBuilder tagBuilder = new TagBuilder("select") 76 { 77 InnerHtml = buffer.ToString() 78 }; 79 tagBuilder.GenerateId(id); 80 tagBuilder.MergeAttribute("name", name); 81 tagBuilder.MergeAttributes(htmlAttributes); 82 return new MvcHtmlString(tagBuilder.ToString()); 83 84 } 85 86 }
-------------------------------------------------------------------
页面调用:

@Html.EnumDropDownList(EDateType.year, "selectDateType", "selectDateType", new { @class = "c1" })

@Html.EnumCustomerDropDownListFor(p => p.DateType)//强类型

Radio扩展:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42117.html