主页 > 知识库 > ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解

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

热门标签:百度竞价排名 地方门户网站 阿里云 硅谷的囚徒呼叫中心 服务器配置 科大讯飞语音识别系统 集中运营管理办法 网站排名优化

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,IDictionarystring,object> htmlAttributes);

BeginForm(string actionName,string controllerName,object routeValues,FormMethod method,object htmlAttributes);

BeginForm(string actionName,string controllerName,RouteValueDictionary routeValues,FormMethod method,IDictionarystring,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,Idictionarystring,object> htmlAttributes);

CheckBox(string name,bool isChecked,Idictionarystring,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,Idictionarystring,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,Idictionarystring,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, IDictionarystring, 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 MVC4 HtmlHelper扩展类,实现分页功能
  • ASP.NET MVC HtmlHelper如何扩展
  • Java简单实现SpringMVC+MyBatis分页插件
  • ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)
  • MVC+jQuery.Ajax异步实现增删改查和分页
  • MVC分页之MvcPager使用详解
  • 超好用轻量级MVC分页控件JPager.Net
  • ASP.NET MVC分页和排序功能实现
  • MVC HtmlHelper扩展类(PagingHelper)实现分页功能

标签:威海 广西 开封 乌兰察布 西双版纳 梧州 随州 甘孜

巨人网络通讯声明:本文标题《ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266