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

创建自定义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 core razor自定义taghelper的方法

    创建自定义html元素 创建一个类ButtonTagHelper tagName为标签名称,下面创建一个button标签 using Microsoft.AspNetCore.Razor.TagHelpers; namespace Ctrl.Core.Tag.Controls.Button { [HtmlTargetElement(test-...

    handlebars-helper-minify:{{minify}} 把手助手,用于使用 html-minifier 缩小 HTML

    来自所有选项都可以在这个助手中使用,还有一些专门为这个助手创建的自定义选项。 助手带有一些合理的默认值(在助手创建者的拙见中),但如果需要,可以轻松自定义它们。 这里有两种(方便的)设置选项的方法: ...

    MagentoStackExchange_Helper:该存储库用于保存我在@stackMagento中用于回答的代码扩展

    可用扩展Rkt_CustomBlock 这是一个简单的magento扩展,用于说明如何在Magento中创建自定义块。 在Magento-1.9.1测试。 SO问题参考:Rkt_FlexibleHead 在大多数情况下,这是不可能包括一个page/html_head type头块的...

    blog-helper:一个显示最新博客文章的小脚本

    SimplyEdit扩展 一组使用CMS功能扩展simpleedit的脚本 blog.js 一个显示最新博客文章的小脚本 要求 该博客脚本适用于网站。... 但是添加以下自定义设置: [removed] var seSettings = { 'pageTemplate': {

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    17.2.7 创建自定义的SiteMapProvider 17.2.8 安全调整 17.3 URL映射和路由 17.3.1 URL映射 17.3.2 URL路由 17.4 TreeView控件 17.4.1 TreeNode 17.4.2 按需填充节点 17.4.3 TreeView样式 17.5 ...

    ASP.NET4高级程序设计(第4版) 3/3

    5.5.2 创建自定义的HTTP处理程序 167 5.5.3 配置自定义的HTTP处理程序 168 5.5.4 使用无须配置的HTTP处理程序 169 5.5.5 创建高级的HTTP处理程序 169 5.5.6 为非HTML内容创建HTTP处理程序 171 5.5.7 HTTP...

    php-docs:一个简单的网络工具,可从结构化的markdown文件在git下创建html docs。 包含可用于Drupal项目的模板

    一个简单的网络工具,可以根据结构化的Markdown文件在git下创建html文档。 我使用它基于结构来创建Drupal手册。 特征 一页文档 HTML默认输出 单页选项 版本控制数据 结构化数据 易于安装并开始 具有CSS变量的自定义...

    Struts2+API+标签全解+网页说明

    component标签:生成一个自定义的组件。 div标签:AJAX标签,生成一个div片段。 fielderror标签:输出异常提示信息。 tabbedPanel:AJAX标签,生成HTML中的Tab页。 tree标签:生成一个树形结构。 treenode标签:...

    cakePHP 中文手册

    10.AJAX,JavaScript,HTML Form以及更多的View Helper.. 11.安全,对话(Session),请求处理组件(Request Handling Components) 12.灵活的ACL机制 13.数据的清理(Data Sanitization) 14.灵活的视图...

    cake php框架 v1.2(仿rails)

    10.AJAX,JavaScript,HTML Form以及更多的View Helper.. 11.安全,对话(Session),请求处理组件(Request Handling Components) 12.灵活的ACL机制 13.数据的清理(Data Sanitization) 14.灵活的视图...

    ASP.NET3.5从入门到精通

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5 高级编程 第 15 章图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    ASP.NET 3.5 开发大全11-15

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    ASP.NET 3.5 开发大全

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    ASP.NET 3.5 开发大全1-5

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    ASP.NET 3.5 开发大全word课件

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    ASPNET35开发大全第一章

    14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 ...

    BootstrapTableHelper

    BootstrapTableHelper 基于想法Chumper / Datatable 使用和laravel创建表##特征该软件包支持:一个文件的任何功能易于添加和排序列包括用于HTML端的简单帮助器在列中使用您自己的函数和演示者在自定义定义的列中...

    LaravelMetaTags:最强大和可扩展的工具,用于管理Laravel项目中的SEO Meta标签

    产品特点管理元标记,设置标题,字符集,分页链接等在HTML的不同位置管理样式,脚本创建自定义标签支持Open Graph和Twitter卡。 支持Google Analytics(分析)跟踪代码。 代码生成器支持Yandex Metrika跟踪代码。 ...

Global site tag (gtag.js) - Google Analytics