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)" οnclick="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属性,方法与前面介绍的大同小异,参见方法列表即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
The ASP.NET MVC 5 Framework is the latest evolution of Microsoft’s ASP.NET web platform. It provides a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility, combined with all the benefits of ASP.NET. ASP.NET MVC 5 contains a number of advances over previous versions, including the ability to define routes using C# attributes and the ability to override filters. The user experience of building MVC applications has also been substantially improved. The new, more tightly integrated, Visual Studio 2013 IDE has been created specifically with MVC application development in mind and provides a full suite of tools to improve development times and assist in reporting, debugging and deploying your code. The popular Bootstrap JavaScript library has also now been included natively within MVC 5 providing you, the developer, with a wider range of multi-platform CSS and HTML5 options than ever before without the penalty of having to load-in third party libraries. What you’ll learn Gain a solid architectural understanding of ASP.NET MVC 5 Explore the entire ASP.NET MVC Framework as a cohesive whole Learn what's new in version 5 and how best to apply these new features to your own work See how MVC and test-driven development work in action Capitalize on your existing knowledge quickly and easily through comparison of features in classic ASP.NET to those in ASP.NET MV Who this book is for This book is for web developers with a basic knowledge of ASP.NET and C#who want, or need, to start using the new ASP.NET MVC 5 Framework. Table of Contents Part I: Introducing ASP.NET MVC 5 1. What's The Big Idea 2. Your first MVC Application 3. The MVC Pattern 4. Essential Language Features 5. Working with Razor 6. Essential Tools for MVC 7. Sports Store: A Real Application 8. Sports Store: Navigation 9. Sports Store: Cart 10. Sports Store: Mobile 11. Sports Store: Admin 12. Sports Store: Security and Finishing Touches 13. Deployment Part II: ASP.NET MVC 5 In Detail 14. Overview of MVC5 Projects 15. URL Routing 16. Advanced Routing Features 17. Controllers and Actions 18. Filters 19. Controllers Extensibility 20. Views 21. Helper Methods 22. Templated Helper Methods 23. URL and Ajax Helper Meothods 24. Model Binding 25. Model Validation 26. Bundles 27. WebAPI and Single Page Applications

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值