转载地址:http://gaoling386.blog.163.com/blog/static/5404602420130595842894/

ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外)。 当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速、通畅的编码工作流。

  与大部分模板的语法不同,在Razor的帮助下,您不需要中断代码编写,仅仅为了在HTML中标注

服务器端代码块的开始和结束。代码分析器足够聪明,它能够从你的代码里推断出是否为服务器端代码。

这种更加简洁、富有表现力的语法更加干净,输入也更快速,有趣。

  今天的博文涵盖了Razor的一项很多人都不知道的功能——利用@helper语法定义可重用的帮助器方法。

  简单的 @helper 方法应用场景

  Razor中的@helper语法让您能够轻松创建可重用的帮助器方法,此方法可以在您的视图模板中

封装输出功能。他们使代码能更好地重用,也使代码更具有可读性。让我们看一个超级简单的应用场景,

它展示了@helper语法是怎样被使用的。

  在我们定义@helper方法之前的代码

  让我们看一个简单的产品列表应用场景。在此场景中,我们列出产品明细并输出产品的价格

或是单词“免费!”——如果这个产品不花费任何成本的话:

  以上代码非常直截了当,而且Razor的语法使得在HTML里能简单地集成服务器端C#代码。

  然而,一个有点混乱的地方是价格的if/else逻辑。我们可能在站点的其他位置输出价格

(或者在同一页面上),而复制以上逻辑很容易出错且难以维护。类似的应用场景是使用

@helper语法提取和重构成为帮助器方法的首选考虑。

  使用@helper语法重构以上样例

  让我们提取价格输出逻辑,并将其封装在一个我们将命名为“DisplayPrice”的帮助器方法内。

我们可以通过重写以下代码样例来实现此操作:

  我们已经使用上述@helper语法来定义名为“DisplayPrice”的可重用帮助器方法。

就像标准C#/VB方法一样,它可以包含任意 数量的参数(您也可以定义参数为空或可选参数)。

不过,与标准C#/VB方法不同的是,@helper方法可以同时包含内容和代码并支持其中的完整

Razor语法——这使得定义和封装呈现/格式化帮助器方法变得非常简单。

  您可以像调用一个标准的C#或VB方法一样,调用@helper方法:

  当调用该方法时,Visual Studio会提供智能感知代码:

  在多视图模式中重用@helper

  在上面的实例中,我们在相同的视图模板中将@helper方法定义为调用它的代码。或者,

我们可以将@helper方法定义在视图模板外,并保证其在项目的所有视图模板中可重复使用。

  您可以在.cshtml/.vbhtml保存我们的@helper方法,并把这个文件放在项目根目录下

创建的\App_Code目录下例如,我 在\App_Code文件夹中创建了一个“ScottGu.cshtml”文件,

并且在文件中定义了2个单独的帮助器方法(在每个文件中您可以有任意数量 的帮助器方法):

  一旦我们的帮助器定义在应用程序级别,我们就可以在应用程序的任何视图模板中使用它们。

  在上面的\App_Code文件夹中的ScottGu.cshtml会逻辑编译为一个称为“ScottGu”的类。

这个类中包含了“DisplayPrice” 和 “AnotherHelper”的静态成员。我们可以使用以下代码

重写前面的示例来调用它:

  当像如下方法调用应用程序级别帮助器时,Visual Studio将会提供智能感知代码:

  5月15日更新:有一些人指出的一个问题是,当一个@helper保存在\app_code目录中时,

默认情况下您不能访问其中的 ASP.NET MVC Html帮助器方法。(例如Html.ActionLink(),

Html.TextBox()等等)。而当它们定义在与视图相同的文件夹中,您是可以访问内置HTML帮助器方法的

。当帮助器位于\app_code目录 下时,确实当下是不支持内置HTML帮助器方法的访问的——

我们将在下次发布中添加此功能。Paul Stovall有一个很好的帮助器类,您可以同时访问和使用

它和您在\app_code目录下定义的@helper方法中的内置Html方法。请从这里了解更多关于如何使用的信息。

  总结

  Razor的@helper语法提供了一种简便的方法来将呈现功能封装到帮助方法中去。

您可以在单个视图模板或整个项目的所有视图模板中重用它。

  您可以使用此功能来编写更加干净、更易维护的代码。

MVC @helper (转载)的更多相关文章

  1. MVC Helper Methods

    在.net MVC中经常会见到特别的写法 比如 @Url.Action( ) @Url.Conyent( ) @Html.Displayfor( )等等 这些 写法就是我们这里要讲的  Helper ...

  2. asp.net MVC helper 和自定义函数@functions小结

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  3. ASP.NET MVC @helper使用说明

    简单的 @helper 方法应用场景 Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能.他们使代码能更好地重用,也使代码更具有可读性. 在我们定义@ ...

  4. [转]asp.net MVC helper 和自定义函数@functions小结

    本文转自:http://www.cnblogs.com/jiagoushi/p/3904995.html asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的 ...

  5. Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> 转载

    Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> mvcmvc:resources  ...

  6. JavaScript MVC 框架[转载]

    MVC,MVP 和 MVVM 的图示 http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html http://blog.nodejitsu.com ...

  7. mvc @helper 创建用户自定义html

    转载地址:https://www.cnblogs.com/caofangsheng/p/5670071.html

  8. ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

    阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helpers 创建Fluent Helpers 创建自动闭合的Helper ...

  9. MVC Bootstrap Helpers

    ASP.NET MVC Bootstrap Helpers   阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helper ...

随机推荐

  1. boost解析json(2)

    "{ "A":1, "B":{ "C":2, "D":3 }, "E":[ {" ...

  2. memcache 开发版

    memcache安装,如果是用xampp,一定要下载开发版本 解压开发包,将其中的include目录复制到应用的lampp目录下 tar -zxvf xampp-linux-devel-1.7.2.t ...

  3. iframe 动态onload事件处理方式

    转自:http://w3help.org/zh-cn/causes/SD9022 标准参考 关于 HTML 4.01 规范中 BODY 标记的 onload 属性说明: http://www.w3.o ...

  4. [Angularjs]ng-file-upload上传文件

    写在前面 最近在弄文档库的H5版,就查找了下相关的上传组件,发现了ng-upload的东东,推荐给大家. 系列文章 [Angularjs]ng-select和ng-options [Angularjs ...

  5. 【原创】angularjs1.3.0源码解析之service

    Angular服务 在angular中,服务(service)是以提供特定的功能的形式而存在的. angular本身提供了很多内置服务,比如: $q: 提供了对promise的支持. $http: 提 ...

  6. ris'In App Purchase总结

    原地址:http://www.cocoachina.com/bbs/read.php?tid=38555&page=1 In App Purchase属于iPhone SDK3.0的新特性,用 ...

  7. [官方教程] [ES4封装教程]2.使用 Easy Sysprep v4 封装 Windows XP

    (一)备份当前操作系统封装的第一步,其实是备份当前安装好的操作系统.避免我们在之后的步骤中出现问题,以至于还要重新安装操作系统,浪费时间精力.系统备份想必大家都会.对于WinXP而言,建议使用Ghos ...

  8. HDU3345广搜 (P,E,T,#)

    War chess is hh's favorite game:In this game, there is an N * M battle map, and every player has his ...

  9. iPhone取消软件更新上边的1

    去除设置的更新+1小红点提示主要分为越狱和非越狱设备两种方法. 越狱状态下方法: 首先将你的设备进行越狱: 越狱后安装ifile(这个自行搜索安装): 用ifile打开/System/Library/ ...

  10. CC MayClg 15 T3

    www.codechef.com/MAY15/problems/CHAPD 一道比较神奇的题目... 看到题目后自己yy出了个傻逼算法...然后对拍都是对的...提交都是错的...然后一看" ...