MVC @helper (转载)
转载地址: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 (转载)的更多相关文章
- MVC Helper Methods
在.net MVC中经常会见到特别的写法 比如 @Url.Action( ) @Url.Conyent( ) @Html.Displayfor( )等等 这些 写法就是我们这里要讲的 Helper ...
- asp.net MVC helper 和自定义函数@functions小结
asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...
- ASP.NET MVC @helper使用说明
简单的 @helper 方法应用场景 Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能.他们使代码能更好地重用,也使代码更具有可读性. 在我们定义@ ...
- [转]asp.net MVC helper 和自定义函数@functions小结
本文转自:http://www.cnblogs.com/jiagoushi/p/3904995.html asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的 ...
- Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> 转载
Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> mvcmvc:resources ...
- JavaScript MVC 框架[转载]
MVC,MVP 和 MVVM 的图示 http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html http://blog.nodejitsu.com ...
- mvc @helper 创建用户自定义html
转载地址:https://www.cnblogs.com/caofangsheng/p/5670071.html
- ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers
阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helpers 创建Fluent Helpers 创建自动闭合的Helper ...
- MVC Bootstrap Helpers
ASP.NET MVC Bootstrap Helpers 阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helper ...
随机推荐
- 更改动软代码生成器模板 验证Model数据合法性
1.第一个模板 判断字段是否为空 类 IsNullableType.cmt static public partial class CommonType { public static bool Is ...
- JDBCTemplate基础学习
JDBCTemplate:spring提供的用于操作数据库的模板,类似DbUtils.使用时必须设置数据源(DataSource):数据源如DBCP.C3P0等 一.JDBCAPI简单使用Demo 1 ...
- javascript学习随笔(二)原型prototype
JavaScript三类方法: 1.类方法:2.对象方法:3.原型方法;注意三者异同 例: function People(name){ this.name=name; //对象方法 this.Int ...
- 初学JDBC,最简单示例
一.下载相应数据库驱动jar包,添加到项目中 二.注册驱动,数据库驱动只加入到classpath中是还不行的,还要在使用的时候注册一下,就像安装驱动软件,只拷贝到硬盘还不行,需要安装一下 Driver ...
- Zabbix 监控 Nginx 状态
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...
- web漏洞总结
目录: 1.sql注入获取数据库信息2.sql注入绕过管理后台登录3.反射型xss4.存储型xss5.csrf6.文件上传7.暴力破解8.目录遍历9.权限跨越10.文件包含11.未知漏洞 web漏洞演 ...
- java开发微信公众平台备忘
简单记录下前段时间开发的电子书的 公众平台的一些备忘及开发心得经验等 eclipse的一些技巧: 1.ctrl+shift+o 自动添加必要import空间及移除无用import 项目备忘+说明 1. ...
- WPF 获取IP地址
List<string> ipList = new List<string>(); foreach (IPAddress _IPAddress in Dns.GetHostEn ...
- php的urlencode()URL编码函数浅析
URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu.Google等搜索引擎中输入中文查询时候,生成经过Encode过的网页URL. URLEncode的方 ...
- Spark Streaming和Flume-NG对接实验
Spark Streaming是一个新的实时计算的利器,而且还在快速的发展.它将输入流切分成一个个的DStream转换为RDD,从而可以使用Spark来处理.它直接支持多种数据源:Kafka, Flu ...