/// <summary>
/// 枚举转化下拉列表数据集
/// </summary>
/// <param name="type">类型</param>
/// <param name="selected">选中项</param>
/// <returns>结果</returns>
public static IEnumerable<SelectListItem> EnumToListItem(Type type, string selected)
{
IList<SelectListItem> list = new List<SelectListItem> { new SelectListItem { Text = "全部", Value = string.Empty } };
Array array = Enum.GetValues(type);
foreach (int item in array)
{
string text = Enum.GetName(type, item);
var selectListItem = new SelectListItem
{
Text = text,
Value = item.ToString(CultureInfo.InvariantCulture),
Selected = !string.IsNullOrEmpty(selected) && selected == text
};
list.Add(selectListItem);
} return list;
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="name">name</param>
/// <param name="selectList">下拉列表集合</param>
/// <param name="obj">属性</param>
/// <returns>MvcHtmlString</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, object obj)
{
string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
if (string.IsNullOrEmpty(fullName))
{
throw new ArgumentException("name");
} StringBuilder listItemBuilder = new StringBuilder();
foreach (SelectListItem item in selectList)
{
TagBuilder builder = new TagBuilder("option")
{
InnerHtml = HttpUtility.HtmlEncode(item.Text)
}; if (item.Value != null)
{
builder.Attributes["value"] = item.Value;
} if (item.Selected)
{
builder.Attributes["selected"] = "selected";
} listItemBuilder.AppendLine(builder.ToString(TagRenderMode.Normal));
} TagBuilder tagBuilder = new TagBuilder("select")
{
InnerHtml = listItemBuilder.ToString()
}; if (obj != null)
{
IDictionary<string, object> htmlAttributes = new RouteValueDictionary(obj);
tagBuilder.MergeAttributes(htmlAttributes);
}
tagBuilder.MergeAttribute("name", fullName, true);
tagBuilder.GenerateId(fullName); return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="name">name</param>
/// <param name="selectList">下拉列表集合</param>
/// <returns>MvcHtmlString</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList)
{
return DropDownList(htmlHelper, name, selectList, null);
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="type">枚举类型</param>
/// <param name="name">name属性</param>
/// <param name="selected">选择项目</param>
/// <param name="obj">其他属性</param>
/// <returns>DropDownList</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, string selected, object obj)
{
IEnumerable<SelectListItem> selectListItem = EnumToListItem(type, selected);
return DropDownList(htmlHelper, name, selectListItem, obj);
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="type">枚举类型</param>
/// <param name="name">name属性</param>
/// <param name="selected">选择项目</param>
/// <returns>DropDownList</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, string selected)
{
return DropDownList(htmlHelper, type, name, selected, null);
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="type">枚举类型</param>
/// <param name="name">name属性</param>
/// <param name="obj">其他属性</param>
/// <returns>DropDownList</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name, object obj)
{
return DropDownList(htmlHelper, type, name, null, obj);
} /// <summary>
/// 自定义DropDownList
/// </summary>
/// <param name="htmlHelper">htmlHelper</param>
/// <param name="type">枚举类型</param>
/// <param name="name">name属性</param>
/// <returns>DropDownList</returns>
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, Type type, string name)
{
return DropDownList(htmlHelper, type, name, null, null);
}

MVC 枚举绑定 DropDownList的更多相关文章

  1. MVC后台绑定dropdownList

     public ActionResult Index()         {             List<SelectListItem> items = new List<Se ...

  2. 你想要的都在这里,ASP.NET Core MVC四种枚举绑定方式

    前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...

  3. ASP.NET Core MVC四种枚举绑定方式

    前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...

  4. 绑定枚举到dropdownlist

    pageTools.BindEnumToDropdownList(typeof(enumDealerArea), ddlBmwArea, new ListItem("--请选择--" ...

  5. Asp.Net MVC绑定DropDownList等控件

    测试环境:vs2013..Net4.5.mvc5 一.Asp.Net MVC绑定控件原理说明 以Html.TextBox为例 /// <param name="name"&g ...

  6. ASP.NET MVC 枚举类型转LIST CONTROL控件

    在实际应用中,我们经常会用到下拉框.多选.单选等类似的控件,我们可以统称他们为List Control,他们可以说都是一种类型的控件,相同之处都是由一个或一组键值对的形式的数据进行绑定渲染而成的. 这 ...

  7. ModelBinder——ASP.NET MVC Model绑定的核心

    ModelBinder——ASP.NET MVC Model绑定的核心 Model的绑定体现在从当前请求提取相应的数据绑定到目标Action方法的参数.通过前面的介绍我们知道Action方法的参数通过 ...

  8. ASP.NET MVC Model绑定(六)

    ASP.NET MVC Model绑定(六) 前言 前面的篇幅对于IValueProvider的使用做个基础的示例讲解,但是没并没有对 IValueProvider类型的实现做详细的介绍,然而MVC框 ...

  9. ASP.NET MVC Model绑定(五)

    ASP.NET MVC Model绑定(五) 前言 前面的篇幅对于IValueProvider的获取位置和所处的生成过程做了讲解,本篇将会对IValueProvider的使用做个基础的示例讲解,读完本 ...

随机推荐

  1. [LeetCode] 721. Accounts Merge_Medium tag: DFS recursive

    Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...

  2. [LeetCode] 717. 1-bit and 2-bit Characters_Easy

    We have two special characters. The first character can be represented by one bit 0. The second char ...

  3. vue.js使用typescript踩坑记

    最近在把https://github.com/renrenio/renren-fast-vue这个项目转为typescript,在此记录一下遇到的小坑 name坑:属性该怎么给? 声明文件坑:如何解决 ...

  4. Django的基本开发环境配置和MTV模型

    一.MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的 ...

  5. 树莓派3B新版raspbian系统换国内源

    树莓派新版系统更换了专门优化过的桌面环境PIXEL,正好手头有个闲置的TF卡决定刷上新版系统玩玩.下载刷系统过程很多教程页很简单.插卡,上电开机,释放卡上的剩余空间都很正常,因为树莓派官方源访问很慢下 ...

  6. unity3d-碰撞检测

    碰撞检测 游戏中很多时候都要判断碰撞检测,比如子弹打中敌机.当碰撞后.就要发生爆炸. 或者敌机减血, 我们先看一张图片,看皮球从天空下落.与地面碰撞的过程 碰撞检测条件 游戏中两个对象发生碰撞是需要条 ...

  7. 数据结构线性表的动态分配顺序存储结构算法c语言具体实现和算法时间复杂度分析

    #include<stdio.h>#include<stdlib.h>//线性表的动态分配顺序存储结构#define LIST_INIT_SIZE 100//线性表存储空间的初 ...

  8. 使用TreeView加载XML文件

    PS: 由于小弟初学编程,本文只写实现方式,代码写的不是很好请见谅! 1.需要读取的xml文档内容 2. 最终实现效果 3  貌似看起实现起来很复杂 但是想想还是挺简单 思路:  读取XML文档 →获 ...

  9. redis 主从同步搭建

    redis 一主二从 1.redis 安装 安装教程:https://www.cnblogs.com/zwcry/p/9505949.html 2.redis主从 1)创建主从目录 mkdir /us ...

  10. 20145122 《Java程序设计》第8周学习总结

    教材学习内容总结 1.NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),flip(),compact()等高级操作. 2.想要取得channel的操 ...