ASP.NET MVC HtmlHelper 类的扩展方法
再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper。微软官方地址是:https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html(v=vs.118).aspx

在此,整理了一份对应的表格,以便快速记忆。
HTML <select> 标签(下拉列表)
<select name="selectTag">
<optgroup label="水果">
<option value="1">苹果</option>
<option value="2" selected="selected">香蕉</option>
<option value="3">梨</option>
</optgroup>
<optgroup label="蔬菜">
<option value="4" disabled="disabled">小白菜</option>
<option value="5">菠菜</option>
<option value="6">青菜</option>
</optgroup>
<optgroup label="衣服" disabled="false">
<option value="7">上衣</option>
<option value="8">裤子</option>
<option value="9">内衣</option>
</optgroup>
</select>
显示效果:

使用思路:
1、首先要建立数据源,也就是下拉列表里的数据
2、数据源里的数据项类型是SelectListItem类型,它有5个属性,分别是
string类型的 Text 要显示的文本,
string类型的 Value 文本对于的值,
bool类型的 Selected 代表是否被选中了,单选<select>标签只能有一个true,默认为false,可以不些,
bool类型的 Disabled 表示选择项是否可用,
最后一个类型复杂些,SelectListGroup 类型的 Group ,表示选项的分组。SelectListGroup类型有2个参数,一个是string类型的Name,也就是分组的名称,第二个属性为bool类型的Disabled 表示是否可用,如果不可用,那么其下的项都不能用,显示为灰色的。
3、然后建立一个列表,类型为List<SelectListItem>,然后把从数据库或其他地方来的数据填充到这个列表及列表项中。
4、把列表实例传递到view页面
5、在页面的@Html.DropDownList()中显示出来
public SelectList MyList()
{
var group1 = new SelectListGroup() { Name = "Group 1" };
var group2 = new SelectListGroup() { Name = "Group 2" }; var items = new List<SelectListItem>(); items.Add(new SelectListItem() { Value = "", Text = "Item 1", Group = group1 });
items.Add(new SelectListItem() { Value = "", Text = "Item 2", Group = group2 }); return new SelectList(items, "Value", "Text");
}
有Group示例1
public ActionResult Index()
{ ViewBag.Items = GetSelectItemListSource(); return View();
} [NonAction]
public IList<SelectListItem> GetSelectItemListSource()
{
//创建分组 var gruop1 = new SelectListGroup() {Name = "Group 1"};
var gruop2 = new SelectListGroup() {Name = "Group 2", Disabled = true};
var gruop3 = new SelectListGroup() {Name = "Group 3"}; //创建项
var selectItems = new List<SelectListItem>()
{
new SelectListItem() {Value = "", Text = "Item 1", Selected = true, Group = gruop1},
new SelectListItem() {Value = "", Text = "Item 2", Group = gruop2, Disabled = true},
new SelectListItem() {Value = "", Text = "Item 3", Group = gruop3},
};
return selectItems;
}
有Group示例2
View页面:@Html.DropDownList("Items")
显示效果:

SelectExtensions 类:表示支持在列表中进行选择
https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.selectextensions(v=vs.118).aspx
在@Html.DropDownList() 文本上按F12查看源码:

DropDownList(HtmlHelper, String)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>)
DropDownList(HtmlHelper, String, String)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, IDictionary<String, Object>)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String, IDictionary<String, Object>)
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String, Object)
-------------------
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>)
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, IDictionary<String, Object>)
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, Object)
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String)
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String, IDictionary<String, Object>)
DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String, Object)
详解DropDownList(String)
1、首先在Action方法里构建需要的数据,数据类型为

public ActionResult Index()
{
var items = new List<SelectListItem>()
{
new SelectListItem() {Text = "苹果", Value = "1", Selected = false},
new SelectListItem() {Text = "香蕉", Value = "2", Selected = true},
new SelectListItem() {Text = "菠萝", Value = "2", Selected = false}
};
ViewBag.Items = items; return View();
}
View
@Html.DropDownList("Items")
显示效果:第二项被默认选中

生成的HTML源码:
<select id="Items" name="Items">
<option value="1">苹果</option>
<option value="2" selected="selected">香蕉</option>
<option value="2">菠萝</option>
</select>
小结:
比较奇怪,为什么就这么神奇的绑定了呢?求解释,我也不知道为什么?!
一个String类型参数的方法字符串的名字要与后台传来的 SelectListItem 类型的参数要一致,即Items,大小写不区分。
DropDownList 方法将呈现一个元素,该元素使用户能够从下拉列表中选择一个项。 列表中的每个项是一个 SelectListItem 对象。
调用 DropDownList 方法与使用 select 元素之间的区别是,DropDownList 方法旨在便于绑定到视图数据或模型数据。
2个参数的:DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>)

第一个参数String表示为<select>标签的name和id,第二个为下拉列表项
3个字符串参数的方法:DropDownList(String, String)

View:@Html.DropDownList("items","-请选中-")
显示效果:

HTML源码:
<select id="items" name="items">
<option value="">-请选中-</option>
<option value="1">苹果</option>
<option value="2" selected="selected">香蕉</option>
<option value="2">菠萝</option>
</select>
4、3个参数的:DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, IDictionary<String, Object>)
name 和selectList参数就不说了,和上面的一样,第3个参数是泛型的字典接口类型, 可以为标签添加属性(特性)
View:@Html.DropDownList("Items", ViewBag.Items as SelectList, new { @style = "width:280px;", size = "20", disabled = "disabled" })
显示效果:

HTML源码:
<select disabled="disabled" id="Items" name="Items" size="20" style="width:280px;">
<option value="1">苹果</option>
<option selected="selected" value="2">香蕉</option>
<option value="2">菠萝</option>
</select>
5、DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)

ASP.NET MVC HtmlHelper 类的扩展方法的更多相关文章
- 扩展ASP.NET MVC HtmlHelper类
在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...
- ASP.NET MVC学前篇之扩展方法、链式编程
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...
- Asp.Net MVC以 JSON传值扩展方法
Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...
- Asp.Net MVC以JSON传值扩展方法
Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...
- [转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择
本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHe ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...
- ASP.Net string 类的扩展方法 [转]
string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表): Aggregate<> //累加 All<> / ...
- asp.net mvc htmlHelper
ASP.NET MVC 3.0 HTML辅助方法 HTML辅助方法(html helper)是用来帮助生成HTML的方法. 1.HTML辅助方法应用实例 ◊ 生成form元素 @using (Ht ...
- ASP.NET MVC HtmlHelper用法集锦
ASP.NET MVC HtmlHelper用法集锦 在写一个编辑数据的页面时,我们通常会写如下代码 1:<inputtype="text"value='<%=View ...
随机推荐
- 通过domoticz restful接口更新数据 c# 控制台程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- JavaScript常用事件参考
onabort 图像加载被中断 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象 onerror 当加载文档 ...
- 对工程测量大师App的评价
我是测绘工程专业的学生,去年由于同学的推荐我开始使用工程测量大师这款App. 工程测量大师是一款非常方便的测量计算软件,用户将测量的数据输入后,软件就可以帮助你得到精确的计算结果.操作非常简单,使用起 ...
- Android webview 退出关闭声音 网页调用javascript
关闭声音,目前没有好的办法,可以参考网络上的实用webview.reload(); @Override protected void onResume() { // TODO Auto-generat ...
- android textview支持多种格式跳转
http://www.linuxidc.com/Linux/2011-08/40530p2.htm 1.android:autoLink属性,使TextView中链接手机号码/网页/邮件/地图 and ...
- 调用azkaban接口,upload 本地zip文件
使用azkaban部署任务,可以将job文件打成zip包,通过web页面上传. 如图 但是当我们实践CI持续化部署的时候,要实现自动的部署上线. 这时就要调用azkaban提供的api. 地址如下:h ...
- MFC中处理UI界面时的注意点
最近开发时,在处理界面上遇到了下面的问题: 上位机与下位机通信时,如果出现超时,弹出MessageBox提示的情况下,更新界面上的CStatic控件会出现重影. 经过调查发现 原因是由于在UI线程中处 ...
- CentOS下双网卡绑定-bond0
网卡绑定就是多张网卡逻辑上作为一张网卡用.可分为,负载均衡绑定和冗余绑定两种. 加载bonding驱动 #modprobe bonding 1.编辑虚拟网络接口配置文件 [root@test~]# ...
- ELK冷热数据分离
通常情况下,我们使用ELK日志分析平台最常用的数据时间为1周或一个月(因业务场景不同,可能存在差别),时间比较长的数据没有特殊情况可能我们就没有必要再进行查询了,但是因业务需求或者作为凭证,这些日 ...
- 【BZOJ1052】 [HAOI2007]覆盖问题
BZOJ1052 [HAOI2007]覆盖问题 前言 小清新思维题. 最近肯定需要一些思维题挽救我这种碰到题目只会模板的菜鸡. 这题腾空出世? Solution 考虑一下我们二分答案怎么做? 首先转换 ...
