实用干货!ASP.Net MVC之Html Helper.Net/ASP开发工程师

/ 福清师大经济学院.Net/ASP开发工程师 / 2016-06-13

有不少在学习ASP.NET MVC的朋友,可能会觉得写代码非常繁琐,枯燥,其实在ASP.NET MVC中有许多微软为我们提供的有用的工具,那么都有什么呢,今天我们就来说说Htmel Helper。当然你也可以不用,但是Html Helper可以为我们节省继续多的时间呢

      

C#,.net.Asp.net,MVC,Html,Helper

一、标准Html Helper


.ActionLink


创建一个链接,但现在还不能创建一个带图片的链接

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>  

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">  

    <p>  

        To learn more about this website, click the following link:   

        <%= Html.ActionLink("About this Website", "About" ) %>  

    p>  

asp:Content>  

"Aboud this Website”显示的内容,"About” Action的名字

生成的Html如下:

<a href="/Home/About">About this Websitea>

ActionLink可以添加接受很多参数


· linkText – 链接上的文字


· actionName – 链接目标的action名字


· routeValues – 通向action的route值


· controllerName – controller名字


· htmlAttributes – 链接的html属性


· protocol – 链接协议 (比如:https)


· hostname – 链接的Host名字 (比如:www.MyWebsite.com)


· fragment – 这个还没弄的太明白╮(╯▽╰)╭


如果想添加个图片链接,使用Url.Action:

<a href="<%= Url.Action("Delete") %>"><img src="http://www.cnblogs.com/Content/Delete.png" alt="Delete" style="border:0px" />a>


Html Helper还可以生成很多Html控件:


· BeginForm() 


· CheckBox() 


· DropDownList() 


· EndForm() 


· Hidden() 


· ListBox() 


· Password() 


· RadioButton() 


· TextArea() 


· TextBox()


 


基本上看名字就知道了,看例子:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>  

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  

  

    <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>  

  

    <% using (Html.BeginForm()) {%>  

  

        <fieldset>  

            <legend>Registerlegend>  

            <p>  

                <label for="FirstName">First Name:label>  

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

                <%= Html.ValidationMessage("FirstName", "*") %>  

            p>  

            <p>  

                <label for="LastName">Last Name:label>  

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

                <%= Html.ValidationMessage("LastName", "*") %>  

            p>  

            <p>  

                <label for="Password">Password:label>  

                <%= Html.Password("Password") %>  

                <%= Html.ValidationMessage("Password", "*") %>  

            p>  

            <p>  

                <label for="Password">Confirm Password:label>  

                <%= Html.Password("ConfirmPassword") %>  

                <%= Html.ValidationMessage("ConfirmPassword", "*") %>  

            p>  

            <p>  

                <label for="Profile">Profile:label>  

                <%= Html.TextArea("Profile", new {cols=60, rows=10})%>  

            p>  

            <p>  

                <%= Html.CheckBox("ReceiveNewsletter") %>  

                <label for="ReceiveNewsletter" style="display:inline">Receive Newsletter?label>  

            p>  

            <p>  

                <input type="submit" value="Register" />  

            p>  

        fieldset>  

  

    <% } %>  

  

asp:Content>  




其中Html.BeginForm()和EndForm()要单独说一下:默认情况下,它会指向和自己相同的action,但也会接受不同参数改变指向的action:


· routeValues -- 如上


· actionName – 如上


· controllerName – 如上


· method – 只能使用POST和GET,必须使用javascript


· htmlAttributes – 如上


 


.Encode(),这个就是替换<为< >为>等等


.AntiForgeryToken 这个是为了抵御跨域攻击的。

<%= Html.AntiForgeryToken() %>



<input name="__RequestVerificationToken"  type="hidden"value="6tbg3PWU9oAD3bhw6jZwxrYRyWPhKede87K/PFgaw

     6MI3huvHgpjlCcPzDzrTkn8" />

helper会创建一个cookie和这个隐藏域的值相比较

在Controller中如下写代码就可以了:

using System.Web.Mvc;  

  

namespace MvcApplication1.Controllers  

{  

    public class BankController : Controller  

    {  

        //  

        // GET: /Bank/Withdraw  

  

        public ActionResult Withdraw()  

        {  

            return View();  

        }  

  

        //  

        // POST: /Bank/Withdraw  

        [AcceptVerbs(HttpVerbs.Post)]  

        [ValidateAntiForgeryToken]  

        public ActionResult Withdraw(decimal amount)  

        {  

            // Perform. withdrawal  

            return View();  

        }  

  

    }  




创建自己的HTML Helpers

using System;  

using System.Web.Mvc;  

  

namespace Helpers  

{  

    public static class SubmitButtonHelper  

    {  

        ///   

        /// Renders an HTML form. submit button  

        ///   

        public static string SubmitButton(this HtmlHelper helper, string buttonText)  

        {  

            return String.Format("", buttonText);  

        }  

  

    }  

}  

看完上面的东西,是不是就觉得豁然开朗了呢,动动你的大脑,可以写出更多有用的Html Helper呢,发挥想想,只有你想不到的,没有做不到呢

汇鱼人才每天发布实用咨询,想要了解更多就来关注汇鱼人才把。



公众号,微信

汇鱼网海峡创乐汇
汇鱼网海峡创乐汇