dhl: 在 ASP.NET MVC 中创建自定义 HtmlHelper 使用扩展方法创建 HTML Helper

时间:2023-02-04 07:41:40

如果想创建如同 ASP.NET MVC Framework 中标准的 HTML Helper 一样工作的 HTML Helper,则需要创建扩展方法。扩展方法可以用于向现有类添加新的方法。创建 HTML Helper 方法时,会将新方法添加到由视图的 Html 属性表示的 HtmlHelper 类中。

程序清单 3 中的类将扩展方法添加到名称为 Label()HtmlHelper 类中。关于此类,有几点需要注意的地方。首先,请注意这个类是静态类。必须在静态类中定义扩展方法。

其次,请注意 Label() 方法的第一个参数前具有关键字 this。扩展方法的第一个参数表明扩展方法所扩展的类。

程序清单 3 Helpers\LabelExtensions.cs

using System;
using System.Web.Mvc;

namespace System.Web.Mvc    //注意: 这样 namespace  MvcApplication1.Helpers 是不行的
{
     public static class LabelExtensions
     {
          public static string Label( this HtmlHelper helper, string target, string text)
          {
               return String.Format("<label for='{0}'>{1}</label>", target, text);
          }
     }
}

创建扩展方法并成功生成应用程序后,扩展方法如同类的其他所有方法一样出现在 Visual Studio Intellisense 中,唯一的不同之处是,扩展方法旁会显示一个特殊的符号(向下箭头图标)。

 

使用 Html.Label() 扩展方法

 <%= Html.Label("firstName", "First Name:") %>   

在本教程中,我们学习了创建自定义 HTML Helper 的两种方法。首先,我们学习了如何通过创建返回字符串的静态方法创建自定义 Label() HTML Helper。接下来,我们学习了如何通过在 HtmlHelper 类中创建扩展方法创建自定义 Label() HTML Helper 方法。