HtmlHelper类在命令System.Web.Mvc.Html之中,主要由7个静态类组成,它们分别是FormExtensions类,InputExtensions类,LinkExtensions类,SelectExtensions类,TextExtensions类,ValidationExtensions类,RenderPartialExtensions类。
为了方便开发者使用HtmlHelper控件,在视图ViewPage类中设置了一个属性Html它就是HtmlHelper类型。
一.FormExtensions类
定义了3中类型的扩展方法BeginForm,BeginRouteForm,EndForm。
(1) BeginForm (实现表单定义的开始部分)
重载方法有13个:
BeginForm();
BeginForm(Object routeValues);
BeginForm(RouteValueDictionary routeValues);
BeginForm(string actionName,string controllerName);
BeginForm(string actionName,string controllerName,object routeValues);
BeginForm(string actionName,string controllerName,RouteValueDictionary routeValues);
BeginForm(string actionName,string controllerName,FormMethod method);
BeginForm(string actionName,string controllerName,object routeValues,FormMethod method);
BeginForm(string actionName,string controllerName,RouteValueDictionary routeVaues,FormMethod method);
BeginForm(string actionName,string controllerName,FormMethod method,object htmlAttributes);
BeginForm(string actionName,string controllerName,FormMethod method,IDictionary<string,object> htmlAttributes);
BeginForm(string actionName,string controllerName,object routeValues,FormMethod method,object htmlAttributes);
BeginForm(string actionName,string controllerName,RouteValueDictionary routeValues,FormMethod method,IDictionary<string,object> htmlAttributes);
对于第二个重载方法可以设置如下:
Html.BeginForm(new{action="action",controller="actroller",id="2"});
在上述代码中,设置了路由值的一个实例化对象,输出的HTML语句是:
<form action="actroller/action/2" method="post"/>
对于最后一个第十三个方法的最后一个参数是实例化对象设置相关属性的值例如class,width等。
(2)BeginRouteForm (主要实现表单定义的开始部分,以路由的方法设置action的值)
有12个重载方法:
BeginRouteForm(object routeValues);
BeginRouteForm(RouteValueDictionary routeValues);
BeginRouteForm(string routeName);
BeginRouteForm(string routeName,object routeValues);
BeginRouteForm(string routeName,RouteValueDictionary routeValues);
BeginRouteForm(string routeName,FormMethod method);
BeginRouteForm(string routeName,object routeValues,FormMethod method);
……
对于第一个重载方法:
Html.BeginRouteForm(new {action="action"});
<form action="Home/action" method="post"/>Home是页面所在的目录
BeginForm与BeginRouteForm的区别就在于第一个的action是action第二个的action是Home/action
(3)EndForm(实现表单的定义的结束部分)
Html.EndForm();
相当于</Form>
二.InputExtensions类有5种类型的扩展方法,可在视图中设置checkBox,hidden,password,radioButton,textBox控件。
(1)CheckBox 实现复选框控件有6个重载方法
CheckBox(string name);
CheckBox(string name,bool isChecked);
CheckBox(string name,bool isChecked,object htmlAttributes);
CheckBox(string name,object htmlAttributes);
CheckBox(string name,Idictionary<string,object> htmlAttributes);
CheckBox(string name,bool isChecked,Idictionary<string,object> htmlAttributes);
设置复选框的实现代码:
<%=Html.BeginForm("CheckBox","Home") %> <fieldset> <legend>设置字体:</lengend> <%=Html.CheckBox("MyCheckBox1",true,new{id="checkBox1"})%> <label for="checkBox1">黑体</label> <%=Html.CheckBox("MyCheckBox2",false,new{id="checkBox2"})%> <label for="checkBox1">斜体</label> <br/><br/> <input type="submit" value="Submit"/> </fieldset> <%Html.EndForm();%>
运行上述代码,上述复选框的设置代码对应的HTML语句:
<input checked="checked" id="checkBox1" name="MyCheckBox1" type="CheckBox" value="true"/> <input name="MyCheckBox1" type="hidden" value="false"/> <input id="checkBox2" name="MyCheckBox2" type="CheckBox" value="false"/> <input name="MyCheckBox2" type="hidden" value="false"/>
在后台检索checkBox
public ActionResult CheckBox (FormCollection formCollection) { bool MyCheckBox1=formCollection[0].Contains("true");//检索第一个复选框是否被选中 bool MyCheckBox2=formCollection["MyCheckBox2"].Contains("true");//检索名字是MyCheckBox2的复选框是否倍选中 ViewData["CheckBox1"]=MyCheckBox1; ViewData["CheckBox2"]=MyCheckBox2; return View(); }
(2)Hidden 表单中的隐藏数值,有4个重载方法。
Hidden(string name);
Hidden(string name,object value);
Hidden(string name,object value,object htmlAttributes);
Hidden(string name,object value,Idictionary<string,object> htmlAttributes);
eg:
Html.Hidden("testName");
对应输出的Html语句如下:
<input id="testName" name="testName" type="hidden" value=""/>
(3)Password 主要是输入密码的文本框,有4个重载方法。
Hidden(string name);
Password (string name,object value);
Password (string name,object value,object htmlAttributes);
Password (string name,object value,Idictionary<string,object> htmlAttributes);
eg:
Html.Password ("MyPwd");
<input id="MyPwd" name="MyPwd" type="password" />
--------------------------------------------------------------------------------------------
HTML扩展类的所有方法都有2个参数:
以textbox为例子
public static string TextBox( this HtmlHelper htmlHelper, string name, Object value, IDictionary<string, Object> htmlAttributes )
public static string TextBox( this HtmlHelper htmlHelper, string name, Object value, Object htmlAttributes )
这2个参数代表这个html标签的属性集合。使用方法如下。
1.ActionLink
<%=Html.ActionLink("这是一个连接", "Index", "Home")%>
带有QueryString的写法
<%=Html.ActionLink("这是一个连接", "Index", "Home", new { page=1 },null)%> <%=Html.ActionLink("这是一个连接", "Index", new { page=1 })%>
有其它Html属性的写法
<%=Html.ActionLink("这是一个连接", "Index", "Home", new { id="link1" })%> <%=Html.ActionLink("这是一个连接", "Index",null, new { id="link1" })%>
QueryString与Html属性同时存在
<%=Html.ActionLink("这是一个连接", "Index", "Home", new { page = 1 }, new { id = "link1" })%> <%=Html.ActionLink("这是一个连接", "Index" , new { page = 1 }, new { id = "link1" })%>
生成结果为:
<a href="/">这是一个连接</a>
带有QueryString的写法
<a href="/?page=1">这是一个连接</a> <a href="/?page=1">这是一个连接</a>
有其它Html属性的写法
<a href="/?Length=4" id="link1">这是一个连接</a> <a href="/" id="link1">这是一个连接</a>
QueryString与Html属性同时存在
<a href="/?page=1" id="link1">这是一个连接</a> <a href="/?page=1" id="link1">这是一个连接</a>
2.RouteLink
跟ActionLink在功能上一样。
<%=Html.RouteLink("关于", "about", new { })%>
带QueryString
<%=Html.RouteLink("关于", "about", new { page = 1 })%> <%=Html.RouteLink("关于", "about", new { page = 1 }, new { id = "link1" })%>
生成结果:
<a href="/about">关于</a> <a href="/about?page=1">关于</a> <a href="/about?page=1" id="link1">关于</a>
3.Form 2种方法
<%using(Html.BeginForm("index","home",FormMethod.Post)){%> <%} %>
<%Html.BeginForm("index", "home", FormMethod.Post);//注意这里没有=输出%> <%Html.EndForm(); %>
生成结果:
<form action="/home/index" method="post"></form>
4.TextBox
<%=Html.TextBox("input1") %> <%=Html.TextBox("input2",Model.CategoryName,new{ @style = "width:300px;" }) %> <%=Html.TextBox("input3", ViewData["Name"],new{ @style = "width:300px;" }) %> <%=Html.TextBoxFor(a => a.CategoryName, new { @style = "width:300px;" })%>
生成结果:
<input id="input1" name="input1" type="text" value="" /> <input id="input2" name="input2" style="width:300px;" type="text" value="Beverages" /> <input id="input3" name="input3" style="width:300px;" type="text" value="" /> <input id="CategoryName" name="CategoryName" style="width:300px;" type="text" value="Beverages" />
5.TextArea
<%=Html.TextArea("input5", Model.CategoryName, 3, 9,null)%> <%=Html.TextAreaFor(a => a.CategoryName, 3, 3, null)%>
生成结果:
<textarea cols="9" id="input5" name="input5" rows="3">Beverages</textarea> <textarea cols="3" id="CategoryName" name="CategoryName" rows="3">Beverages</textarea>
6.CheckBox
<%=Html.CheckBox("chk1",true) %> <%=Html.CheckBox("chk1", new { @class="checkBox"}) %> <%=Html.CheckBoxFor(a =>a.IsVaild, new { @class = "checkBox" })%>
生成结果:
<input checked="checked" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" /> <input class="checkBox" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" /> <input checked="checked" class="checkBox" id="IsVaild" name="IsVaild" type="checkbox" value="true" /><input name="IsVaild" type="hidden" value="false" />
7.ListBox
<%=Html.ListBox("lstBox1",(SelectList)ViewData["Categories"])%> <%=Html.ListBoxFor(a => a.CategoryName, (SelectList)ViewData["Categories"])%>
生成结果:
<select id="lstBox1" multiple="multiple" name="lstBox1"> <option value="1">Beverages</option> <option value="2">Condiments</option> <option selected="selected" value="3">Confections</option> <option value="4">Dairy Products</option> <option value="5">Grains/Cereals</option> <option value="6">Meat/Poultry</option> <option value="7">Produce</option> <option value="8">Seafood</option> </select> <select id="CategoryName" multiple="multiple" name="CategoryName"> <option value="1">Beverages</option> <option value="2">Condiments</option> <option value="3">Confections</option> <option value="4">Dairy Products</option> <option value="5">Grains/Cereals</option> <option value="6">Meat/Poultry</option> <option value="7">Produce</option> <option value="8">Seafood</option> </select>
8.DropDownList
<%= Html.DropDownList("ddl1", (SelectList)ViewData["Categories"], "--Select One--")%> <%=Html.DropDownListFor(a => a.CategoryName, (SelectList)ViewData["Categories"], "--Select One--", new { @class = "dropdownlist" })%>
生成结果:
<select id="ddl1" name="ddl1"> <option value="">--Select One--</option> <option value="1">Beverages</option> <option value="2">Condiments</option> <option selected="selected" value="3">Confections</option> <option value="4">Dairy Products</option> <option value="5">Grains/Cereals</option> <option value="6">Meat/Poultry</option> <option value="7">Produce</option> <option value="8">Seafood</option> </select> <select class="dropdownlist" id="CategoryName" name="CategoryName"> <option value="">--Select One--</option> <option value="1">Beverages</option> <option value="2">Condiments</option> <option value="3">Confections</option> <option value="4">Dairy Products</option> <option value="5">Grains/Cereals</option> <option value="6">Meat/Poultry</option> <option value="7">Produce</option> <option value="8">Seafood</option> </select>
9.Partial 视图模板
webform里叫自定义控件。功能都是为了复用。但使用上自定义控件真的很难用好。
<% Html.RenderPartial("DinnerForm"); %>
看清楚了没有等号的。
本文向大家介绍ASP.NET中Image控件使用详解,包括了ASP.NET中Image控件使用详解的使用技巧和注意事项,需要的朋友参考一下 Image控件又称图像控件,主要用来显示用户的图片或图像信息。 一、属性 表1 Image控件常用属性及说明 属性 说明 ID 控件ID ImageAlign 获取或设置Image控件相对于网页上其他元素的对齐方式 ImageUrl 获取或设置在Image控件
本文向大家介绍ASP.NET中Label控件用法详解,包括了ASP.NET中Label控件用法详解的使用技巧和注意事项,需要的朋友参考一下 Label 控件提供了一种在 ASP.NET 网页中以编程方式设置文本的方法。当希望在运行时更改网页中的文本(比如响应按钮单击)时,通常可以使用 Label 控件。 一、属性 Label控件的常用属性及说明如表1所示。 表1 Label控件常用属性及说明 属性
本文向大家介绍C#实现窗体中的各个控件同比自动放缩大小,包括了C#实现窗体中的各个控件同比自动放缩大小的使用技巧和注意事项,需要的朋友参考一下 实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录,然后根据窗体改变的大小同时放缩。 简要步骤如下: 1、创建C#窗体程序项目。 2、Panel放置到窗体。 3、设置属性dock为fill。 4、注意MinnumSize
本文向大家介绍C++中MFC Tab Control控件的使用详解,包括了C++中MFC Tab Control控件的使用详解的使用技巧和注意事项,需要的朋友参考一下 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在M
因此,我将一个名为“size”的整数保存到一个名为SettingsStageController的控制器类中。java和我希望通过另一个名为GameStageController的控制器类文件访问该变量。java,但我似乎不知道怎么做。 设置标记控制器。JAVA GameStageController.java
本文向大家介绍Android中Spinner(下拉框)控件的使用详解,包括了Android中Spinner(下拉框)控件的使用详解的使用技巧和注意事项,需要的朋友参考一下 android给我们提供了一个spinner控件,这个控件主要就是一个列表,那么我们就来说说这个控件吧,这个控件在以前的也看见过,但今天还是从新介绍一遍吧。 Spinner位于 android.widget包下,每次只显示用户选