ASP.NET MVC @helper使用说明
2016-03-02 11:57
573 查看
简单的 @helper 方法应用场景
Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能。他们使代码能更好地重用,也使代码更具有可读性。
在我们定义@helper方法之前的代码
让我们看一个简单的产品列表应用场景。在此场景中,我们列出产品明细并输出产品的价格或是单词“免费!”——如果这个产品不花费任何成本的话:
以上代码非常直截了当,而且Razor的语法使得在HTML里能简单地集成服务器端C#代码。
在多视图模式中重用@helper
在上面的实例中,我们只是在1个视图中定义了@helper方法,所以它只能再当前视图中使用。
然而,我们可以将@helper方法定义在视图模板外,让项目的所有视图都可以重复使用。
您可以在.cshtml/.vbhtml保存我们的@helper方法,并把这个文件放在项目根目录下创建的\App_Code目录下例如,我在\App_Code文件夹中创建了一个“ScottGu.cshtml”文件,并且在文件中定义了2个单独的帮助器方法:
一旦我们的帮助器定义在应用程序级别,我们就可以在应用程序的任何视图模板中使用它们。
在上面的\App_Code文件夹中的ScottGu.cshtml会逻辑编译为一个称为“ScottGu”的类。这个类中包含了“DisplayPrice” 和 “AnotherHelper”的静态成员。我们可以使用以下代码重写前面的示例来调用它:
当像如下方法调用应用程序级别帮助器时,VS将会提供智能感知代码:
有一个问题:当一个@helper保存在\app_code目录中时,默认情况下您不能访问其中的ASP.NET MVC Html帮助器方法。(例如Html.ActionLink(), Html.TextBox()等等)。而当它们定义在与视图相同的文件夹中,您是可以访问内置HTML帮助器方法的。当帮助器位于\app_code目录下时,确实当下是不支持内置HTML帮助器方法的访问的。
总结
Razor的@helper语法提供了一种简便的方法来将呈现功能封装到帮助方法中去。您可以在单个视图模板或整个项目的所有视图模板中重用它。
但是,我个人还是喜欢在App_Code中新建类,然后在视图中使用,感觉这样爽,纯属于个人习惯,呵呵,大家自便。
Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能。他们使代码能更好地重用,也使代码更具有可读性。
在我们定义@helper方法之前的代码
让我们看一个简单的产品列表应用场景。在此场景中,我们列出产品明细并输出产品的价格或是单词“免费!”——如果这个产品不花费任何成本的话:
以上代码非常直截了当,而且Razor的语法使得在HTML里能简单地集成服务器端C#代码。
在多视图模式中重用@helper
在上面的实例中,我们只是在1个视图中定义了@helper方法,所以它只能再当前视图中使用。
然而,我们可以将@helper方法定义在视图模板外,让项目的所有视图都可以重复使用。
您可以在.cshtml/.vbhtml保存我们的@helper方法,并把这个文件放在项目根目录下创建的\App_Code目录下例如,我在\App_Code文件夹中创建了一个“ScottGu.cshtml”文件,并且在文件中定义了2个单独的帮助器方法:
一旦我们的帮助器定义在应用程序级别,我们就可以在应用程序的任何视图模板中使用它们。
在上面的\App_Code文件夹中的ScottGu.cshtml会逻辑编译为一个称为“ScottGu”的类。这个类中包含了“DisplayPrice” 和 “AnotherHelper”的静态成员。我们可以使用以下代码重写前面的示例来调用它:
当像如下方法调用应用程序级别帮助器时,VS将会提供智能感知代码:
有一个问题:当一个@helper保存在\app_code目录中时,默认情况下您不能访问其中的ASP.NET MVC Html帮助器方法。(例如Html.ActionLink(), Html.TextBox()等等)。而当它们定义在与视图相同的文件夹中,您是可以访问内置HTML帮助器方法的。当帮助器位于\app_code目录下时,确实当下是不支持内置HTML帮助器方法的访问的。
总结
Razor的@helper语法提供了一种简便的方法来将呈现功能封装到帮助方法中去。您可以在单个视图模板或整个项目的所有视图模板中重用它。
但是,我个人还是喜欢在App_Code中新建类,然后在视图中使用,感觉这样爽,纯属于个人习惯,呵呵,大家自便。
相关文章推荐
- [ASP.NET] ASP.NET Identity 中 ClaimsIdentity 解析
- Asp.Net_Web身份验证
- ASP.NET MVC 生命周期
- ABP Asp.net(c#) 找不到组件问题的解决
- 细说ASP.NET Forms身份认证
- 关于MCASP和slot的一些点
- ASP.NET MVC IOC 之AutoFac攻略
- asp.net+js实现批量编码与解码的方法
- aspx后缀映射成html
- ASP.NET Core – 2300% More Requests Served Per Second
- asp.net+js实现批量编码与解码的方法
- ASP.NET Mvc开发之删除修改数据
- 7天 搞定 ASP.NET MVC - 第2天
- 谈谈IIS与ASP.NET管道
- asp.net页面之间的跳转
- Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】
- asp.net连接数据库报错
- ASP.NET MVC学前篇之Ninject的初步了解
- raspberry-pi之DSI
- 在ASP.NET Core 1.0中如何发送邮件