MVC 枚举绑定 DropDownList

  1         /// <summary>
  2         /// 枚举转化下拉列表数据集
  3         /// </summary>
  4         /// <param name="type">类型</param>
  5         /// <param name="selected">选中项</param>
  6         /// <returns>结果</returns>
  7         public static IEnumerable<SelectListItem> EnumToListItem(Type type, string selected)
  8         {
  9             IList<SelectListItem> list = new List<SelectListItem> { new SelectListItem { Text = "全部", Value = string.Empty } };
 10             Array array = Enum.GetValues(type);
 11             foreach (int item in array)
 12             {
 13                 string text = Enum.GetName(type, item);
 14                 var selectListItem = new SelectListItem
 15                 {
 16                     Text = text,
 17                     Value = item.ToString(CultureInfo.InvariantCulture),
 18                     Selected = !string.IsNullOrEmpty(selected) && selected == text
 19                 };
 20                 list.Add(selectListItem);
 21             }
 22
 23             return list;
 24         }
 25
 26         /// <summary>
 27         /// 自定义DropDownList
 28         /// </summary>
 29         /// <param name="htmlHelper">htmlHelper</param>
 30         /// <param name="name">name</param>
 31         /// <param name="selectList">下拉列表集合</param>
 32         /// <param name="obj">属性</param>
 33         /// <returns>MvcHtmlString</returns>
 34         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, object obj)
 35         {
 36             string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
 37             if (string.IsNullOrEmpty(fullName))
 38             {
 39                 throw new ArgumentException("name");
 40             }
 41
 42             StringBuilder listItemBuilder = new StringBuilder();
 43             foreach (SelectListItem item in selectList)
 44             {
 45                 TagBuilder builder = new TagBuilder("option")
 46                 {
 47                     InnerHtml = HttpUtility.HtmlEncode(item.Text)
 48                 };
 49
 50                 if (item.Value != null)
 51                 {
 52                     builder.Attributes["value"] = item.Value;
 53                 }
 54
 55                 if (item.Selected)
 56                 {
 57                     builder.Attributes["selected"] = "selected";
 58                 }
 59
 60                 listItemBuilder.AppendLine(builder.ToString(TagRenderMode.Normal));
 61             }
 62
 63             TagBuilder tagBuilder = new TagBuilder("select")
 64             {
 65                 InnerHtml = listItemBuilder.ToString()
 66             };
 67
 68             if (obj != null)
 69             {
 70                 IDictionary<string, object> htmlAttributes = new RouteValueDictionary(obj);
 71                 tagBuilder.MergeAttributes(htmlAttributes);
 72             }
 73             tagBuilder.MergeAttribute("name", fullName, true);
 74             tagBuilder.GenerateId(fullName);
 75
 76             return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
 77         }
 78
 79         /// <summary>
 80         /// 自定义DropDownList
 81         /// </summary>
 82         /// <param name="htmlHelper">htmlHelper</param>
 83         /// <param name="name">name</param>
 84         /// <param name="selectList">下拉列表集合</param>
 85         /// <returns>MvcHtmlString</returns>
 86         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList)
 87         {
 88             return DropDownList(htmlHelper, name, selectList, null);
 89         }
 90
 91         /// <summary>
 92         /// 自定义DropDownList
 93         /// </summary>
 94         /// <param name="htmlHelper">htmlHelper</param>
 95         /// <param name="type">枚举类型</param>
 96         /// <param name="name">name属性</param>
 97         /// <param name="selected">选择项目</param>
 98         /// <param name="obj">其他属性</param>
 99         /// <returns>DropDownList</returns>
100         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, string selected, object obj)
101         {
102             IEnumerable<SelectListItem> selectListItem = EnumToListItem(type, selected);
103             return DropDownList(htmlHelper, name, selectListItem, obj);
104         }
105
106         /// <summary>
107         /// 自定义DropDownList
108         /// </summary>
109         /// <param name="htmlHelper">htmlHelper</param>
110         /// <param name="type">枚举类型</param>
111         /// <param name="name">name属性</param>
112         /// <param name="selected">选择项目</param>
113         /// <returns>DropDownList</returns>
114         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, string selected)
115         {
116             return DropDownList(htmlHelper, type, name, selected, null);
117         }
118
119         /// <summary>
120         /// 自定义DropDownList
121         /// </summary>
122         /// <param name="htmlHelper">htmlHelper</param>
123         /// <param name="type">枚举类型</param>
124         /// <param name="name">name属性</param>
125         /// <param name="obj">其他属性</param>
126         /// <returns>DropDownList</returns>
127         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, object obj)
128         {
129             return DropDownList(htmlHelper, type, name, null, obj);
130         }
131
132         /// <summary>
133         /// 自定义DropDownList
134         /// </summary>
135         /// <param name="htmlHelper">htmlHelper</param>
136         /// <param name="type">枚举类型</param>
137         /// <param name="name">name属性</param>
138         /// <returns>DropDownList</returns>
139         public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name)
140         {
141             return DropDownList(htmlHelper, type, name, null, null);
142         }

时间: 2024-10-03 19:23:24

MVC 枚举绑定 DropDownList的相关文章

MVC后台绑定dropdownList

public ActionResult Index()        { List<SelectListItem> items = new List<SelectListItem>()            {                new SelectListItem(){Text="Income", Value="income"},                new SelectListItem(){Text="Ou

绑定枚举到dropdownlist

pageTools.BindEnumToDropdownList(typeof(enumDealerArea), ddlBmwArea, new ListItem("--请选择--", "0"), ""); /// <summary>    /// 绑定枚举到dropdownlist    /// </summary>    /// <param name="enumType">枚举类型&l

ASP.NET MVC Model绑定(二)

ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程是什么样的?将在本篇为大家解除这些疑惑,在其中涉及到的一些描述类型和上下文参数会在后续的篇幅中讲到. Model绑定 IModelBinder.自定义Model绑定器简单实现 Model绑定器在MVC框架中的位置 MVC中的默认Model绑定器生成过程 IModelBinderProvider的简单

ASP.NET MVC Model绑定(六)

ASP.NET MVC Model绑定(六) 前言 前面的篇幅对于IValueProvider的使用做个基础的示例讲解,但是没并没有对 IValueProvider类型的实现做详细的介绍,然而MVC框架中给我们提供了几种默认的实现类型,在本篇中将会对NameValueCollectionValueProvider类型做一个示例讲解,了解一下MVC框架给我们提供的值提供程序是怎么处理Model值的. Model绑定 IModelBinder.自定义Model绑定器简单实现 Model绑定器在MVC

ASP.NET MVC Model绑定(五)

ASP.NET MVC Model绑定(五) 前言 前面的篇幅对于IValueProvider的获取位置和所处的生成过程做了讲解,本篇将会对IValueProvider的使用做个基础的示例讲解,读完本篇你将会对IValueProvider有个更清晰的印象. Model绑定 IModelBinder.自定义Model绑定器简单实现 Model绑定器在MVC框架中的位置 MVC中的默认Model绑定器生成过程 IModelBinderProvider的简单应用 IValueProvider在MVC框

ASP.NET MVC Model绑定(一)

ASP.NET MVC Model绑定(一) 前言 ModelMetadata系列的结束了,从本篇开始就进入Model绑定部分了,这个系列阅读过后你会对Model绑定有个比较清楚的了解, 本篇对于Model绑定器的最基础的应用作个简单的示例展示,目的在于让大家事先了解一下Model绑定器是什么样的便于后续篇幅的理解. Model绑定 IModelBinder.自定义Model绑定器简单实现 Model绑定器在MVC框架中的位置 MVC中的默认Model绑定器生成过程 IModelBinderPr

GridView 中绑定DropDownList ,下拉框默认选中Label的值

在GridView中,我们 有时候要绑定值. 前台绑定的代码可以这样 <asp:TemplateField HeaderText="当前状态" ItemStyle-HorizontalAlign="Center"> <EditItemTemplate> <asp:DropDownList ID="dStatus" DataSource='<%#BindStatus()%>' DataTextField=&

[转] ASP.NET MVC 模型绑定的功能和问题

摘要:本文将与你深入探究 ASP.NET MVC 模型绑定子系统的核心部分,展示模型绑定框架的每一层并提供扩展模型绑定逻辑以满足应用程序需求的各种方法. 同时,你还会看到一些经常被忽视的模型绑定技术,并了解如何避免一些最常见的模型绑定错误. ASP.NET MVC 模型绑定通过引入自动填充控制器操作参数的抽象层.处理通常与使用 ASP.NET 请求数据有关的普通属性映射和类型转换代码来简化控制器操作. 虽然模型绑定看起来很简单,但实际上是一个相对较复杂的框架,由许多共同创建和填充控制器操作所需对

ASP.NET MVC Model绑定(四)

ASP.NET MVC Model绑定(四) 前言 前面的篇幅对于Model绑定器IModelBinder以及实现类型.Model绑定器提供程序都作了粗略的讲解,可以把Model绑定器想象成一个大的容器,为什么这么说呢?留个疑问在这里. 首先控制器的方法参数可能是很多种类型的.可能是多个同一种类型的,应对这种情况MVC框架使用的绑定实现都是IValueProvider来做的,而针对参数类型的不同等等一些情况,IValueProvider的实现类型也是有很大的差异的,这些具体实现的讲解会在后续的篇