HtmlHelper扩展
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