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

[翻译]ASP.NET MVC Tip #1 - 使用扩展方法创建新 HTML Helpers

2009-11-13 09:17 330 查看
本技巧里,我演示如何创建两个 HTML Helper,并在 ASP.NET MVC 视图中调用。您可以使用扩展方法(extension method)创建新 HTML Helper,以显示有序列表和无序列表(bulleted and numbered lists)。

给 ASP.NET MVC 应用程序创建视图时,您可以利用 HTML Helpers 呈现标准 HTML 标签。例如,除了这样写代码:

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

您还可以这样写:

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

长远来看,HTML Helpers 可以给您节省很多时间。但是,若您希望呈现的标签没有 HTML Helper 怎么办?例如,想象一下,您希望在视图上把数据库记录显示成无序列表(<ul>),而 HtmlHelper 类不包含可让您呈现无序列表的方法。要是 HTML Helper 缺少您需要的方法,扩展它吧!

通过创建新的扩展方法,您可以给 HtmlHelper 增加新的行为。扩展方法看起来像极了普通的实例方法。然而,不同于实例方法,您在一个完全不同的类中给另一个类添加扩展方法。

在 Visual Basic.Net 里,您创建扩展的方法是,创建一个模块(module),然后用一个特殊的属性类(ExtensionAttribute)来修饰扩展方法。在 C# 中,您在静态类(static class)中定义扩展方法,使用 this 关键字标识其为扩展的。

您可以添加扩展方法到 HtmlHelper 类,以将数据库记录显示为有序列表(ordered list )或无序列表(unordered list)。

Listing 1 – ListExtensions.vb (VB.NET)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using BulletedListHelper.Models;

namespace BulletedListHelper.Controllers

{

public class HomeController : Controller

{

private MoviesDataContext db = new MoviesDataContext();

public ActionResult Index()

{

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

return View(movies);

}

}

}


您可以在 ASP.NET MVC 视图中使用这种方法呈现任何内容,例如您可以使用相同方法呈现 TreeViews,Menus,tabstrips,或者其它任何东西。

点击这里下载源代码

原文:ASP.NET MVC Tip #1 - Create New HTML Helpers with Extension Methods
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: