/// <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. 【转】SVM入门(一)SVM的八股简介

    (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  2. html09

    1.Jquery的常用方法1)选择器2)操作节点以下的 obj 都是指 jQuery对象 1.操作样式 obj.css() :不加参数是获取节点的css样式 obj.css({"属性&quo ...

  3. Summary: Stack Overflow Error

    What is a stack overflow error? Parameters and local variables are allocated on the stack (with refe ...

  4. cxf-webservice完整示例

    最近一段时间研究webservice,一般来说,开发java的Webservice经常使用axis2和cxf这两个比较流行的框架 先使用cxf,开发一个完整示例,方便对webservice有一个整体的 ...

  5. 将Pytorch模型从CPU转换成GPU

    1. 如何进行迁移 对模型和相应的数据进行.cuda()处理.通过这种方式,我们就可以将内存中的数据复制到GPU的显存中去.从而可以通过GPU来进行运算了. 1.1 判定使用GPU 下载了对应的GPU ...

  6. hive支持sql大全(收藏版)

    hive操作数据库还是比较方便的,因此才会有hbase与hive整合.下面我们hive的强大功能吧.为了增强阅读性,下面提几个问题: 1.hive支持哪些运算符? 2.hive是否支持左右连接? 3. ...

  7. LLVM/Clang编译相关研究

    https://blog.csdn.net/guojin08/article/details/54310858 https://juejin.im/entry/5c64da44518825620b45 ...

  8. 斯坦福大学机器学习,EM算法求解高斯混合模型

    斯坦福大学机器学习,EM算法求解高斯混合模型.一种高斯混合模型算法的改进方法---将聚类算法与传统高斯混合模型结合起来的建模方法, 并同时提出的运用距离加权的矢量量化方法获取初始值,并采用衡量相似度的 ...

  9. 使用token实现在有效期内APP自动登录功能

    实现此功能的场景是在当下用户对手机APP体验要求高,并且相对安全前提的推动下诞生:当你下载了一个QQ,微信第一次进行了账号和密码的登录,你从此以后打开应用免去了你每日打开应用都要输入账号跟密码的痛苦过 ...

  10. bzoj1704 / P2882 [USACO07MAR]面对正确的方式Face The Right Way

    P2882 [USACO07MAR]面对正确的方式Face The Right Way $n<=5000$?枚举翻转长度,顺序模拟就ok了 对于每次翻转,我们可以利用差分的思想,再搞搞前缀和. ...