首页 > 编程 > .NET > 正文

ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解

2020-03-24 15:43:23
字体:
来源:转载
供稿:网友
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");
对应输出的Html语句如下:
复制代码 代码如下:
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" type="text" value="Beverages" /
input id="input3" name="input3" type="text" value="" /
input id="CategoryName" name="CategoryName" 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 { @ }) %
%=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 id="chk1" name="chk1" type="checkbox" value="true" / input name="chk1" type="hidden" value="false" /
input checked="checked" 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 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"); %
看清楚了没有等号的。更多编程语言

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表