`
webdev2014
  • 浏览: 679960 次
文章分类
社区版块
存档分类
最新评论

【翻译】了解ASP.NET MVC的HTML助手

 
阅读更多

原文:Understanding HTML Helpers in ASP.NET MVC


作者:Shailendra Chauhan works as Software Analyst at reputed MNC and has more than 5 years of hand over Microsoft .NET technologies. He is a .NET Consultant and is the founder & chief editor of www.dotnet-tricks.com and www.dotnetinterviewtricks.com blogs. He is author of book ASP.NET MVC Interview Questions and Answers.
He loves to work with web applications and mobile apps using Microsoft technology including ASP.NET, MVC, C#, SQL Server, WCF, Web API, Entity Framework,Cloud Computing, Windows Azure, jQuery, jQuery Mobile, Knockout.js, Angular.js and many more web technologies. More...


HTML助手就是用来返回HTML字符串的方法。这些字符串可以用来表现你所期望的任何内容。例如,可以使用HTML助手来渲染标准的HTML标记,如HTML的<input>、<button>和<img>等标记。


还可以通过创建自定义的HTML助手来渲染更多更复杂的内容,如菜单条或用来显示数据库数据的HTML表格。


不同类型的HTML助手

以下列出了三种类下的HTML助手:

内联式的HTML助手

这些需要在同一视图内使用Razor的@hepler标记来创建。这些助手可以在同一视图内被重用。

    @helper ListingItems(string[] items)
    {
    <ol>
    @foreach (string item in items)
    {
    <li>@item</li>
    }
    </ol>
    }
     
    <h3>Programming Languages:</h3>
     
    @ListingItems(new string[] { "C", "C++", "C#" })
     
    <h3>Book List:</h3>
     
    @ListingItems(new string[] { "How to C", "how to C++", "how to C#" })

内置的HTML助手

内置的HTML助手是HtmlHelper类的扩展方法。内置的HTML助手可以划分为3种类型:

标准的HTML助手

这些助手可以用来渲染最常用的HTML元素类型,如HTML文本输入框、复选框等。以下是最常用的标准Html助手列表:

HTML元素

示例

TextBox

@Html.TextBox("Textbox1", "val")
输出: <input id="Textbox1" name="Textbox1" type="text" value="val" />

TextArea

@Html.TextArea("Textarea1", "val", 5, 15, null)
输出: <textarea cols="15" id="Textarea1" name="Textarea1" rows="5">val</textarea>

Password

@Html.Password("Password1", "val")
输出: <input id="Password1" name="Password1" type="password" value="val" />

Hidden Field

@Html.Hidden("Hidden1", "val")
输出: <input id="Hidden1" name="Hidden1" type="hidden" value="val" />

CheckBox

@Html.CheckBox("Checkbox1", false)
输出: <input id="Checkbox1" name="Checkbox1" type="checkbox" value="true" /> <input name="myCheckbox" type="hidden" value="false" />

RadioButton

@Html.RadioButton("Radiobutton1", "val", true)
输出: <input checked="checked" id="Radiobutton1" name="Radiobutton1" type="radio" value="val" />

Drop-down list

@Html.DropDownList (“DropDownList1”, new SelectList(new [] {"Male", "Female"}))
输出: <select id="DropDownList1" name="DropDownList1"> <option>M</option> <option>F</option> </select>

Multiple-select

Html.ListBox(“ListBox1”, new MultiSelectList(new [] {"Cricket", "Chess"}))
输出: <select id="ListBox1" multiple="multiple" name="ListBox1"> <option>Cricket</option> <option>Chess</option> </select>


强类型的HTML助手

这些助手主要用来在强类型视图内渲染最常用的HTML元素类型,如HTML文本输入框、复选框等等。HTML元素会根据模型属性来创建。强类型HTML助手需要与lambda表达式一起使用。模型对象会被作为lambda表达式的值来传递,而你可以从模型中选择一个字段或属性来设置HTML助手id、名称和值属性。以下是最常用的强类型HTML助手的列表:

HTML元素

示例

TextBox

@Html.TextBoxFor(m=>m.Name)
输出: <input id="Name" name="Name" type="text" value="Name-val" />

TextArea

@Html.TextArea(m=>m.Address , 5, 15, new{}))
输出: <textarea cols="15" id="Address" name=" Address " rows="5">Addressvalue</textarea>

Password

@Html.PasswordFor(m=>m.Password)
输出: <input id="Password" name="Password" type="password"/>

Hidden Field

@Html.HiddenFor(m=>m.UserId)
输出: <input id=" UserId" name=" UserId" type="hidden" value="UserId-val" />

CheckBox

@Html.CheckBoxFor(m=>m.IsApproved)
输出: <input id="Checkbox1" name="Checkbox1" type="checkbox" value="true" /> <input name="myCheckbox" type="hidden" value="false" />

RadioButton

@Html.RadioButtonFor(m=>m.IsApproved, "val")
输出: <input checked="checked" id="Radiobutton1" name="Radiobutton1" type="radio" value="val" />

Drop-down list

@Html.DropDownListFor(m => m.Gender, new SelectList(new [] {"Male", "Female"}))
输出: <select id="Gender" name="Gender"> <option>Male</option> <option>Female</option> </select>

Multiple-select

Html.ListBoxFor(m => m.Hobbies, new MultiSelectList(new [] {"Cricket", "Chess"}))
输出: <select id="Hobbies" multiple="multiple" name="Hobbies"> <option>Cricket</option> <option>Chess</option> </select>


模板化的HTML助手

这些助手需要弄清楚那些HTML元素是被要求基于模型类的属性进行渲染的。尽管这需要一些细致和耐心的设置,但这是一种将数据显示给用户的非常灵活的做法。为了使用模板化的HTML助手来设置适合的HTML元素,需要使用DataAnnitation类的DataType特性。

例如,当使用DataType作为密码,模板化的助手会自动渲染密码类型的HTML的input元素。

模板化助手

示例

Display

渲染一个指定模型属性的只读视图,并基于属性的数据类型和元数据选择适当的HTML元素。

Html.Display("Name")

DisplayFor

前一个的助手的强类型版本。
Html.DisplayFor(m => m. Name)

Editor

为指定的模型属性渲染一个编辑器,并给予属性的数据类型和元数据选择适当的HTML元素。
Html.Editor("Name")

EditorFor

前一个的助手的强类型版本。
Html.EditorFor(m => m. Name)


自定义的HTML助手

还可以通过创建HtmlHelper类的扩展方法或在功能类内创建静态方法的方式来创建自定义的辅助方法。


    public static class CustomHelpers
    {
    //Submit Button Helper
    public static MvcHtmlString SubmitButton(this HtmlHelper helper, string
    buttonText)
    {
    string str = "<input type=\"submit\" value=\"" + buttonText + "\" />";
    return new MvcHtmlString(str);
    }
    //Readonly Strongly-Typed TextBox Helper
    public static MvcHtmlString TextBoxFor<TModel, TValue>(this
    HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>>
    expression, bool isReadonly)
    {
    MvcHtmlString html = default(MvcHtmlString);
     
    if (isReadonly)
    {
    html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper,
    expression, new { @class = "readOnly",
    @readonly = "read-only" });
    }
    else
    {
    html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper,
    expression);
    }
    return html;
    }
    }


分享到:
评论

相关推荐

    【免费】ASP.NET MVC5 高级编程[附源码].rar

    ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...

    ASP.NET MVC 4高级编程 第4版PDF.rar

    ASP.NET MVC 是微软官方提出的一种Web开发框架,通过M是模型(model)-V视图(view)-C控制器(controller)l来设计创建Web应用程序。截至目前最新版本是MVC5,相对于之前的版本MVC5其可扩展性、易用性等方面都不很大的...

    Pro ASP.NET MVC 5 epub

    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 ...

    精通ASP.NET MVC5

    了解第ASP.NET MVC 5的新特性以及如何将这些新特性运用于开发 了解MVC及测试驱动开发的实际运作 充分利用已有的知识快速而方便地将传统的ASP.NET与ASP.NET MVC 5的特性进行比较 本书讲解了ASP.NET MVC 5的所有特点,...

    ASP.NET MVC 4 Web编程

    本书介绍了微软最新的ASP.NET MVC 4框架,包括如何使用ASP.NET MVC 4框架构建Web应用程序,ASP.NET MVC 4框架的运行原理,如何在真实开发场景中使用ASP.NET MVC 4框架新特性来解决不同的需求,如何使用HTML、...

    Bootstrap for ASP.NET MVC

    In the process, you will also learn to build ASP.NET MVC HTML helpers and T4 templates as well as how to use the jQuery DataTables plugin. At the end of this book, you will find some valuable tips ...

    ASP.NET MVC4 中文版.rar

    本书介绍了微软最新的ASP.NET MVC4框架,包括如何使用ASP.NET MVC4框架构建Web应用程序,ASP.NET MVC4框架的运行原理,如何在真实开发场景中使用ASP.NET MVC4框架新特性来解决不同的需求,如何使用HTML、JavaScript...

    ASP.NET MVC 5高级编程 第5版(中文版)

    ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...

    ASP.NET MVC 4高级编程(包含源码)

    本书开篇简要介绍ASP.NET MVC框架,然后直奔主题,讨论使用ASP.NET和最新MicrosoftMVC来构建数据驱动的动态网站需要了解的所有重要知识点。书中提供了按部就班的详细指导和大量的代码示例,引导读者入门并逐渐掌握...

    Bootstrap.for.ASP.NET.MVC.2nd.Edition.17858894

    Combine the power of ASP.Net MVC 6 with Bootstrap 4 to build elegant, responsive web apps About This Book Updated for Bootstrap 4 and ASP.Net MVC 6, this book shows how to take advantage of the ...

    Test-Drive ASP.NET MVC

    ASP.NET MVC 2.0 lets you test drive your code, control the output of your HTML, and leverage C# and .NET in an easy-to-use web framework. This book shows you all you need to know to get started ...

    Asp.net MVC5 手机Web应用开发(高清英文pdf)

    Mobile ASP.NET MVC 5 will take you step-by-step through the process of developing fluid content that adapts its layout to the client device using HTML, JavaScript and CSS, and responsive web design....

    ASP.NET MVC 4高级编程(第4版)中文版 超清晰PDF

    本书开篇简要介绍ASP.NET MVC框架,然后直奔主题,讨论使用ASP.NET和最新MicrosoftMVC来构建数据驱动的动态网站需要了解的所有重要知识点。书中提供了按部就班的详细指导和大量的代码示例,引导读者入门并逐渐掌握...

    asp.net Mvc开发的资产管理系统.zip

    用的是ASP.NET MVC开发模式,可以导入和导出excel表格,使用了js、ajax,html,css后端使用nhibernate连接数据库,数据库用的sqlsever2015,系统主要有3个模块,部门、用户和资产模块,各模块都有多级分页模糊查询,...

    ASP.NET MVC 4高级编程(第4版)中文版 超清晰PDF及配套源码Part1

    开篇简要介绍ASP.NET MVC框架,然后直奔主题,讨论使用ASP.NET和最新MicrosoftMVC来构建数据驱动的动态网站需要了解的所有重要知识点。书中提供了详细指导和大量的代码示例,引导读者入门并逐渐掌握高级主题。  ...

    ASP.NET MVC 4 高级编程 源码

    An outstanding author team presents the ultimate Wrox guide to ASP.NET MVC 4 Microsoft insiders join giants of the software development community to offer this in-depth guide to ASP.NET MVC, an ...

    Asp.net MVC3 的HTML5支持

    Asp.net MVC3 的HTML5支持

    精通 ASP.NET MVC 5 (Adam Freeman) [中文版]高清完整PDF版

    ASP.NET MVC 5框架是微软ASP.NET Web平台的新进展。它提供了高生产率的编程模型,结合ASP.NET的全部优势,促成更整洁的代码架构、测试驱动开发和强大的可扩展性。 本书涵盖ASP.NET MVC 5的所有开发优势技术,包括用...

    ASP.NET MVC 3高级编程

    《asp.net mvc 3高级编程》 第1章 入门 1 1.1 asp.net mvc简介 1 1.1.1 asp.net mvc如何适应asp.net 1 1.1.2 mvc模式简介 2 1.1.3 mvc在web框架中的应用 2 1.1.4 asp.net mvc 3的发展历程 3 1.1.5 razor视图...

    [ASP.NET MVC] ASP.NET MVC 4 高级编程 (英文版)

    An outstanding author team presents the ultimate Wrox guide to ASP.NET MVC 4 Microsoft insiders join giants of the software development community to offer this in-depth guide to ASP.NET MVC, an ...

Global site tag (gtag.js) - Google Analytics