您的位置:首页 > 编程语言 > ASP

(转)[翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper

2008-12-09 21:19 302 查看
原文地址:http://weblogs.asp.net/stephenwalther/archive/2008/06/13/asp-net-mvc-tip-1-creating-new-html-helpers-with-extension-methods.aspx

摘要:在这个Tip中,Stephen Walther创建了两个新的HTML Helper,你可以直接在ASP.NET MVC视图中使用它们。Stephen Walther展示了如何用扩展方法创建用于显示无序列表和有序列表的HTML Helper。

在为ASP.NET MVC应用程序创建视图时,你可以使用HTML Helper来呈现标准的HTML标签。例如,对于下面的代码:

<input name="inpSubmit" type="submit" value="Click Here!" />

可以写为:

<%= Html.SubmitButton("inpSubmit", "Click Here!") %>

后面这种写法可以为你节省大量的时间。但如果没有与你要呈现的标签对应的HTML Helper呢?例如,假设你要在视图中为数据库记录显示一个无序列表。HtmlHelper类中并未包含用于显示无序列表的方法。别灰心,如果HTML Helper中没有你需要的方法,尽管去扩展它吧!

通过建立新的扩展方法,你可以向HtmlHelper类添加新的功能。扩展方法看上去和普通的实例方法类似。然而,与实例方法不同,你可以在完全不同的类中为另外一个类添加扩展方法。

在Visual Basic .NET中,创建扩展方法的方法是创建一个模块,并用一个特殊的特性来声明一个方法。在C#中,可以在一个静态类中定义扩展方法,并使用关键字this来指出要扩展的类。

下面展示了如何为HtmlHelper类添加扩展方法来为数据库记录显示有序列表和无序列表:

清单1 - ListExtensions.vb (VB.NET)

1Imports System

2Imports System.Collections

3Imports System.Text

4Imports System.Web

5Imports System.Web.Mvc

6Imports System.Runtime.CompilerServices

7

8using System;

using System.Collections;

using System.Text;

using System.Web;

using System.Web.Mvc;

namespace BulletedListHelper.HtmlHelpers

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

<h1>Movies (Ordered)</h1>

<%= Html.OrderedList(ViewData.Model) %>

<h1>Movies (Unordered)</h1>

<%= Html.UnorderedList(ViewData.Model) %>

</asp:Content>

注意在文件的顶部引入了BulletedList.HtmlHelpers命名空间。Html.OrderedList()用于呈现有序列表,而Html.UnorderedList()用于呈现无序列表。注意在View的Html属性所暴露的HtmlHelper对象上调用了这些方法,和其他扩展方法一样。当你在浏览器中打开该视图时,可以得到如图1所示的页面:

图1 - 使用自定义HTML Helper呈现的Index.aspx

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using BulletedListHelper.Models;

namespace BulletedListHelper.Controllers

{

{

{

var movies = from m in db.Movies select m.Title;

return View(movies);

}

}

}

你可以使用这种方式向ASP.NET MVC视图中呈现几乎任何东西。例如,你可以使用类似的方法创建TreeView、Menu、TabStrip等等。

此处下载源代码:http://weblogs.asp.net/blogs/stephenwalther/Downloads/Tip1/ListHtmlHelpers.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: