一、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属性,方法与前面介绍的大同小异,参见方法列表即可。