(转)[翻译] 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
摘要:在这个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
相关文章推荐
- [翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper
- 使用扩展方法创建新的HTML Helper
- dhl: 在 ASP.NET MVC 中创建自定义 HtmlHelper 使用扩展方法创建 HTML Helper
- Tip#1-使用扩展方法创建新的HTML Helper
- [翻译]ASP.NET MVC Tip #1 - 使用扩展方法创建新 HTML Helpers
- asp.net mvc htmlhelper 扩展方法
- 使用扩展方法创建 HTML Helper
- .NET MVC3中扩展一个HtmlHelper方法CheckBoxList
- 使用 helper 方法创建树
- 使用扩展方法创建 HTML Helper
- 如何定义HtmlHelper扩展方法
- MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便
- 使用MVC中的HtmlHelper对象的ActionLink方法,实现一个Javascript:void(0)效果,去调用一个JS方法
- .NET MVC3中扩展一个HtmlHelper方法CheckBoxList
- [ASP.NET MVC]为HtmlHelper添加一个RadioButtonList扩展方法
- 使用HtmlHelper为ASP.NET MVC3扩展CheckBoxList
- 自定义HtmlHelper扩展方法
- ASP.Net MVC开发基础学习笔记(2):HtmlHelper与扩展方法
- .NET MVC3 中扩展一个HtmlHelper方法CheckBoxList
- Web MVC开发程序代码的简写方法,强类型数据和Html helper使用方法。车老师代码