zoukankan      html  css  js  c++  java
  • [翻译]ASP.NET MVC Tip #1 使用扩展方法创建新 HTML Helpers

    本技巧里,我演示如何创建两个 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)


    Code

    Listing 1 – ListExtensions.cs (C#)


    Code

    ListExtensions 类有两个公有方法:OrderedList() 与 UnorderedList()。您传递一个集合到其中一个方法以显示有序(numbered)或无序(bulleted)列表。注意到两个方法都返回字符串类型。真是的,HTML Helper 方法不过就是呈现格式化字符串到浏览器而已。

    创建好扩展方法后,您就可以在视图中使用它们:


    Listing 2 – Index.aspx

    Xml Code

    请注意,视图文件中导入了 BulletedList.HtmlHelpers 这个域名空间(namespace)。方法 Html.OrderedList() 用以呈现有序列表,而 Html.UnorderedList() 用以呈现无序列表。这些方法通过 HtmlHelper 类被调用,正如其他扩展方法,HtmlHelper 由视图(System.Web.Mvc.ViewPage)的 Html 属性公开出来。当您在浏览器打开这个视图,您得到结果如下图所示 :

    Figure 1 – 以自定义 HTML Helper 的方式呈现视图 Index.aspx


    最后,控制器 HomeController 公开 Index() 方法(VB 代码省略了 ActionResult),说明您可以传递一个电影记录集合到 Index.aspx 视图。电影记录使用 Linq to SQL 方式查询出来。


    Listing 3 – HomeController.vb (VB.NET)

    VB.Net Code


    Listing 3 – HomeController.cs (C#)

    C# Code

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


    点击这里下载源代码

    原文:ASP.NET MVC Tip #1 - Create New HTML Helpers with Extension Methods

  • 相关阅读:
    durex-word
    闲聊可穿戴设备
    闲聊质数
    一步一步学swift之:自己写Api接口-PHP
    Swift实战-小QQ(第2章):QQ侧滑菜单
    Swift实战-小QQ(第1章):QQ登录界面
    一步一步学习Swift之(一):关于swift与开发环境配置
    objective-c底层: runtime机制
    手把手教你视频直播开发
    多语言本地化开发Localized
  • 原文地址:https://www.cnblogs.com/feixian49/p/1602211.html
Copyright © 2011-2022 走看看