您的位置:首页 > Web前端 > HTML

C# ASP.NET MVC HtmlHelper

2013-04-15 14:33 330 查看
一、Html.ActionLink控件语法

1、linkText:生成的链接所显示的文字          类型:string

2、actionName:对应控制器的方法 类型:string

3、routeValues:向对应的action传递的参数      类型:object 或 RouteValueDictionary

4、controlName:指定控制器的名称         类型:string

5、htmlAttributes:设置<a>标签的属性 类型:object 或 IDictionary

6、protocol:指定访问协议如:http等         类型:string

7、hostName:指定访问域名             类型:string

8、fragment:指定访问锚点             类型:string

重载一:Html.ActionLink("linkText","actionName")【默认当前页面控制器】

调用:<%: Html.ActionLink("默认当前页面控制器", "About")%>

生成效果:<a href="/Home/About">默认当前页面控制器</a>

重载四:Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)

调用:

  htmlAttributes Is object:

  <%: Html.ActionLink("首页", "Index", "Home", null, new { @class = "active", target = "_blank" })%>

【注:由于class是保留关键字,所以一定要写成@class】

  htmlAttributes Is IDictionary:

  <%IDictionary<string, object> AttrDictionary = new Dictionary<string, object>();

  AttrDictionary["class"] = "active";

  AttrDictionary["target"] = "_blank";

  %>

生成效果:<a class="active" href="/" target="_blank">首页</a>

重载五:Html.ActionLink("linkText","actionName","controlName","protocol","hostName","fragment",routeValues,htmlAttributes)

调用:<%: Html.ActionLink("关于我们", "About", "Home", "http", "localhost", "top", null, null)%>

生成效果:<a href="http://localhost:12120/Home/About#top">关于我们</a>

========================================================================================================================

========================================================================================================================

ActionLink中QueryString与html属性设置

1: 带有QueryString的写法

2: <%=Html.ActionLink("这是一个连接", "Index", "Home", new { page=1 },null)%>

3: <%=Html.ActionLink("这是一个连接", "Index", new { page=1 })%>

4: 有其它Html属性的写法

5: <%=Html.ActionLink("这是一个连接", "Index", "Home", new { id="link1" })%>

6: <%=Html.ActionLink("这是一个连接", "Index",null, new { id="link1" })%>

7: QueryString与Html属性同时存在

8: <%=Html.ActionLink("这是一个连接", "Index", "Home", new { page = 1 }, new { id = "link1" })%>

9: <%=Html.ActionLink("这是一个连接", "Index" , new { page = 1 }, new { id = "link1" })%>

其生成结果为:

1: 带有QueryString的写法

2: <a href="/?page=1">这是一个连接</a>

3: <a href="/?page=1">这是一个连接</a>

4: 有其它Html属性的写法

5: <a href="/?Length=4" id="link1">这是一个连接</a>

6: <a href="/" id="link1">这是一个连接</a>

7: QueryString与Html属性同时存在

8: <a href="/?page=1" id="link1">这是一个连接</a>

9: <a href="/?page=1" id="link1">这是一个连接</a>

这样就可以使用ActionLink生成近乎所有的地址连接了。

注意,如果连接中不涉及到action及controller就没有必要使用ActionLink,而是直接写HTML代码就可以了,例如

1: <a href="#1">一章</a>

2: <a href="javascript:void(0)" onclick="delete();">删除</a>

========================================================================================================================

========================================================================================================================

二、表单元素

ASP.NET MVC提供了多种表单元素的Helper。其中包括:TextBox(类似input type=text,下面类似)、TextArea、DropDownList(select)、CheckBoxHidden、ListBox、Password、RadionButton。

1、文本框:input type=text它的name为t1则以下代码:

<%=Html.TextBox("t1") %>

让上文中的t1初始时就有一个值,比如 “重典”那么我们可以按以下方式

<%=Html.TextBox("t1","重典") %>

如果数据是从数据库中读取,即得到数据是从Action中获取的,那么我们可以在Action中使用ViewData传递

Action:

1: ViewData["name"]="重典";

View:

1: <%=Html.TextBox("t1",ViewData["name"]) %>

1.1、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" />

1.2TextBox

<%=Html.TextBox("txtNum", "1", new { @class = "amount", onblur = "equa3()" })%>//文本框失去焦点事件

2、列表数据显示与绑定

DropDownList或ListBox应该怎么绑定数据及初始化值呢,我们来看看下面的例子:

Action:

1: ViewData["sel1"] = new SelectList(

2: new[] {1, 2, 3} /*列表内容可以是数组*/

3: , 3 /*默认值,可以是从数据库读出的*/

4: );

View:

1: <%=Html.DropDownList("sel1")%>

这样就可以将列表内容、默认值、以及表单元素三者绑定在一起了。而我们的列表内容并不是任何情况下都是数组的,大多情况下还是Key-Value对居多。我们可以使用以下方式:

1: List<SelectListItem> list = new List<SelectListItem>

2: {

3: new SelectListItem {Text = "重典", Value = "1"},

4: new SelectListItem {Text = "邹健", Value = "2"},

5: };

6: ViewData["sel1"] = new SelectList(

7: list /*列表内容可以是数组*/

8: , "2" /*默认值,可以是从数据库读出的*/

9: );

3、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>

4、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" />

5、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>

6、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>

7、Partial 视图模板(自定义控件)

webform里叫自定义控件。功能都是为了复用。但使用上自定义控件真的很难用好。

<% Html.RenderPartial("DinnerForm"); %> 看清楚了没有等号的。

<% Html.RenderAction("Footer", "UserControl");%>

8、Hidden

<%=Html.Hidden("hidId", ViewData["hidId"])%>

<%=Html.Hidden("HiddenField6")%>

9、生成Form

我们当然可以使用纯的Html代码或UrlHelper来生成一个Form。如

1:<form action="/home/index" method="post"></form>

1:<form action="<%=Url.Action("Index","Home")%>" method="post"></form>

但因为是在HTML的属性中,所以还是难以维护,幸好ASP.NET MVC为我们提供了一个Helper,我们可以通过以下两种方式生成一个Form:

方式一:

<%using(Html.BeginForm("index","home",FormMethod.Post)){%>

表单内容

<%} %>

方式二:

<%Html.BeginForm("index", "home", FormMethod.Post);//注意这里没有=输出%>

表单内容

<%Html.EndForm(); %>

BeginForm方法类似于ActionLink的调用方式,所以ASP.NET MVC还提供了BeginRouteForm这种方法。

当然这里我们也可以使用new{}来为form的action增加querystring或HTML属性,方法与前面介绍的大同小异,参见方法列表即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: