MVC HtmlHelper说明

来源:互联网 发布:数据统计业务员业绩表 编辑:程序博客网 时间:2024/06/07 21:49
C# ASP.NET MVC HtmlHelper用法大全
一、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属性,方法与前面介绍的大同小异,参见方法列表即可。

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

AJax请求URL路径方法

url: "http://localhost:8888/tblGroups/GetKendoIndex"         http://域名/控制器名称/方法名称
url: "/tblGroups/GetKendoIndex"                                              控制器名称/方法名称
url: "@Url.Action("GetKendoIndex", "tblGroups")"                 方法名称,控制器名称
contentType: "application/json; charset=utf-8",
type: "post",
dataType: "json"

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

一、mvc中url传参数
1、页面写法
      var url = "/PublishmentSystem/Auto_Read/?kw="+123
2、控制层获取参数
   public JsonResult Auto_Read(string kw)
   {
       string name = kw.ToString();
       return Json(GetPublishmentSystemsList(name), JsonRequestBehavior.AllowGet);
   }

注意:控制器名称不要“Controller”
比如:Controllers文件夹下tblGroupsController.cs控制器文件
ajax发送url请求时,只要写成“tblGroups”,不需要写“tblGroupsController”

url: "/tblGroups/GetKendoIndex",                      正确
url: "/tblGroupsController/GetKendoIndex",      错误

原创粉丝点击