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

创建自定义HTML Helper

 
阅读更多

此教程向你演示如何在你的MVC视图里创建自定义HTML Helper。利用 HTML Helpers, 可以减少乏味的输入HTML标签。

在教程的第一部分,我描述了ASP.NET MVC框架已有的HTML Helper。然后,我描述了创建自定义HTML Helper的两个方法:我会解释如何通过创建静态方法和扩展方法来创建HTML Helper。

理解 HTML Helper

HTML Helper 只是一个返回字符串的方法。这个字符串可以表示你想要的任何内容。例如,你可以使用HTML Helper来呈现标准的HTML标签如 HTML <input><img> 标签。你还可以用HTML Helper来呈现更多复杂内容比如一个标签页或者一个数据库数据的HTML表格。

ASP.NET MVC 框架包括了以下标准的HTML Helpers (此列表并不完整):

  • Html.ActionLink()
  • Html.BeginForm()
  • Html.CheckBox()
  • Html.DropDownList()
  • Html.EndForm()
  • Html.Hidden()
  • Html.ListBox()
  • Html.Password()
  • Html.RadioButton()
  • Html.TextArea()
  • Html.TextBox()

例如, 考虑代码1的表单。此表单由两个标准HTML Helper呈现(见图1)。此表单用 Html.BeginForm()Html.TextBox() Helper 方法来呈现一个简单的HTML表单。

图01: 由HTML Helper呈现的页面 (点击查看完整大小)

代码1 – Views/Home/Index.aspx

Html.BeginForm() Helper 方法用来创建 HTML <form> 标签的开头和结尾。注意 Html.BeginForm() 方法在一个using语句里调用。 using 语句确保 <form> 标签在using块最后能够关闭。

如果你愿意,不用using块,你可以调用 Html.EndForm() Helper 方法来关闭 <form>标签。觉得哪个直观你就用哪个吧。

Html.TextBox() Helper 方法用来呈现 HTML <input>标签。如果你在浏览器中选择查看源代码那么你会看到如图2所示的HTML源。注意源代码包含了标准的HTML标签。

重要点: 注意 Html.TextBox()-HTML Helper 用 <%= %> 标签而不是 <% %> 标签来呈现。如果你不加这个等号,那么浏览器将不呈现任何东西。

ASP.NET MVC 框架包含了一小组helpers。八成情况下,你将需要用自定义HTML Helper来扩展MVC框架。在此教程的其余部分,你会学到两个创建自定义HTML Helper的方法。

代码2 – Index.aspx Source

用静态方法创建HTML Helper

新建HTML Helper的最简单的方法是创建一个返回字符串的静态方法。例如,你决定新建一个HTML Helper来呈现 HTML <label> 标签。你可以使用代码3中的类来呈现<label>

代码3 – Helpers/LabelHelper.cs

代码3中的类没什么特别的。 Label() 方法仅仅返回一个字符串。

代码4中修改后的Index视图用 LabelHelper 呈现 HTML <label>标签。注意视图包括了一个<%@ imports %> 指令来引入 Application1.Helpers 命名空间。

代码4 – Views/Home/Index2.aspx

用扩展方法创建HTML Helper

如果你想创建跟ASP.NET MVC框架中的标准HTML Helper那样的HTML Helper,那么你需要创建扩展方法。扩展方法让你可以在现有类中添加新方法。创建HTML Helper方法时,为HtmlHelper类添加新方法,这个类由视图的Html属性表示。

代码5 中的类添加了一个名为Label()扩展方法到 HtmlHelper。 此类你要注意很多地方。首先,注意这个类是个静态类。你必须定义扩展方法到静态类。

其次, 注意Label() 方法的第一个参数前面有个关键字 this。扩展方法的第一个参数指示了扩展方法所扩展的类。

代码5 – Helpers/LabelExtensions.cs

创建了扩展方法,并成功生成你的应用程序后,扩展方法就可以像其他类中的所有方法那样显示在Visual Studio智能提示中。(见图 2)。唯一不同的是扩展方法旁边的图标比较特殊(一个向下的箭头)。

图02:使用 Html.Label() 扩展方法(点击查看完整大小)

代码6中修改后的Index视图用 Html.Label() 扩展方法呈现它所有的 <label> 标签。

代码6 – Views/Home/Index3.aspx

总结

在这篇教程里,你学到了两个创建自定义HTML Helper的方法。首先,你学到了如何通过创建一个返回字符串的静态方法来创建一个自定义 Label() HTML Helper。 然后,你学到了如何通过在HtmlHelper 类中创建一个扩展方法类创建一个自定义 Label() HTML Helper。

在这篇教程里,我专注于建立一个极其简单的HTML Helper方法。注意 HTML Helper 可以随你所想地完成。你可以建立呈现诸如树形列表,菜单或者数据库记录的表格等丰富内容的HTML Helper。

分享到:
评论

相关推荐

    ASP.NET MVC框架开发系列课程(20):HTML Helper的使用与扩展

    - 自定义HTML Helper的一个例子可能是创建一个用于生成复杂表单元素,如带有验证和默认值的日期选择器。 4. **优势** - **可读性**: HTML Helper方法的名称直观地表示了它们的作用,使得代码更易读。 - **可维护...

    MVC Music Store - Tutorial - v3.0

    - 创建自定义HTML Helper方法来处理文本截断。 #### 6. 使用Data Annotations进行模型验证 - **添加验证到专辑表单**: - 在模型类中添加Data Annotations属性来设置验证规则。 - **测试客户端验证**: - 在...

    HtmlHelper

    例如,我们可以使用`HtmlHelper`的`TextBox`方法来创建输入框,`Label`方法创建标签,`DropDownList`方法创建下拉列表等。这些方法接收参数,如控件名称、值和属性,返回生成的HTML字符串。 `HtmlHelper`类也支持...

    asp.net core razor自定义taghelper的方法

    通过创建TagHelper类、指定目标元素、处理属性以及注册TagHelper,我们可以构建出符合项目需求的自定义HTML元素,同时保持代码的整洁和可维护性。这种机制极大地提高了开发效率,简化了前端与后端之间的交互。

    MVC日历控件 Html Helper Asp.net

    public static IHtmlString Calendar(this HtmlHelper htmlHelper) { var script = "$(function() { $('#calendar').datepicker(); });"; return new HtmlString("&lt;input type='text' id='calendar' /&gt;" + ...

    Zend Framework自定义Helper类相关注意事项总结

    以下是一些关于创建和使用自定义Helper类的关键注意事项: 1. **类命名规范**: - Helper类名必须遵循`Zend_View_Helper_`前缀,后接助动词的名称。例如,如果助动词叫做"SpecialPurpose",那么类名应为`My_View_...

    MVC_HtmlHelper用法大全

    在实际开发中,开发者应当根据具体的需求选择合适的HtmlHelper方法,或者根据需要扩展自定义的HtmlHelper方法来满足更加复杂的需求。此外,随着*** MVC的版本更新,HtmlHelper的功能也可能会有所增强和变化,因此...

    MVC3处理反复提交,HtmlHelper用法大全,拓展方法

    除了内置的辅助方法外,开发者还可以自定义`HtmlHelper`的拓展方法,以满足特定需求。例如,我们可以创建一个生成自定义CSS类的`TextBoxFor()`拓展方法: ```csharp public static class HtmlHelperExtensions { ...

    WebMatrix中的Helper(源码)上

    在WebMatrix中,Helper扩展了这个功能,允许开发者创建自定义的辅助方法,进一步提升开发效率和代码的可维护性。 在了解WebMatrix中的Helper源码之前,我们先来理解Helper的基本概念。Helper通常是一段封装了特定...

    Laravel开发-laravel-html-helper

    总之,`laravel-html-helper`是一个提升Laravel项目开发效率的工具,它通过面向对象的方式简化了HTML和表单的创建,同时也确保了代码的安全性。熟练掌握这些助手函数,将使你的Laravel应用在保持代码整洁的同时,...

    PrecisionHelper绿色版

    PrecisionHelper是一款专业的CHM(Microsoft Compiled HTML Help)制作工具,其绿色版本提供了便捷的文档创建体验,无需安装即可使用,适合需要快速制作帮助文档的用户。CHM文件是一种常见的电子文档格式,通常用于...

    ASP.NET MVC HtmlHelper用法大全

    `ActionLink`是`HtmlHelper`中最常用的方法之一,用于创建指向控制器操作的链接。该方法可以接受多个参数,包括链接文本、目标动作名称、控制器名称等,并且还可以包含额外的查询字符串或HTML属性。 **基本用法示例...

    html_helper.rar_it

    1. **PHP自定义函数**:HTML助手通常由一系列自定义的PHP函数组成,这些函数执行特定的HTML操作,如创建链接、生成表格、制作表单等。开发者可以根据需要扩展或定制这些函数。 2. **HTML模板化**:HTML助手可以用于...

    Precision Helper 中文 免费 CHM 制作软件

    Precision Helper是一款专为用户制作CHM(Compiled HTML Help)文件的免费软件,尤其适合需要创建中文帮助文档的用户。CHM文件是一种常见的Windows平台上的帮助文档格式,它将HTML页面集合压缩在一个单一的文件中,...

    C# 封装HtmlHelper组件:BootstrapHelper

    创建一个新的C#类,命名为BootstrapHelper,继承自System.Web.Mvc.HtmlHelper。这个类需要包含与HtmlHelper类似的构造函数,以便在视图中正确实例化。例如: ```csharp public class BootstrapHelper : System.Web....

    PrecisionHelper

    "Help projects" 可能是指PrecisionHelper的项目文件,用户在创建CHM文件时,会创建并保存这些项目,它们包含了所有与帮助文件相关的源文件、设置和结构信息。 使用PrecisionHelper,用户可以: 1. 整合多种格式的...

    ASP.NET MVC @Helper帮助方法和@functons自定义函数的用法方法_.docx

    ### ASP.NET MVC中@Helper帮助方法与@functions自定义函数详解 #### 一、引言 在ASP.NET MVC框架中,视图层的编写是非常重要的一环。为了提高开发效率和代码可维护性,框架提供了多种工具和技术。其中,`@Helper` ...

    AngularJS中的Directive自定义一个表格

    AngularJS中的Directive是一种非常强大的功能,它允许开发者创建自定义的HTML标签、属性、类或注释,从而扩展了HTML的能力。在这篇文章中,我们要讲述如何利用AngularJS的Directive功能来自定义一个表格。 首先,...

    一个支持普通分页和综合分页的MVC分页Helper

    总结起来,一个支持普通分页和综合分页的MVC分页Helper是通过扩展`HtmlHelper`并利用`TagBuilder`来创建自定义分页控件的。这种方法允许开发者自定义分页的样式和行为,同时保持代码的整洁和可维护性。在实际项目中...

Global site tag (gtag.js) - Google Analytics