您的位置:首页 > 编程语言 > ASP

ASP.NET MVC Tip #19 – 使用 nVelocity 视图模板引擎

2008-07-20 16:06 513 查看
ASP.NET MVC Tip #19 – 使用 nVelocity 视图模板引擎

ASP.NET MVC Tip #19 – Use the nVelocity View Engine

美语原文:http://weblogs.asp.net/stephenwalther/archive/2008/07/14/asp-net-mvc-tip-19-use-the-nvelocity-view-engine.aspx

国语翻译:http://www.cnblogs.com/mike108mvp

译者注:在下水平有限,翻译中若有错误或不妥之处,欢迎大家批评指正。谢谢。

译者注:ASP.NET MVC QQ交流群 1215279 欢迎对 ASP.NET MVC 感兴趣的朋友加入

在这篇帖子中,我演示了在你在ASP.NET MVC application呈现视图时,如何使用nVelocity视图模板引擎,而不是使用通常的Web Forms视图引擎。

默认情况下,你可以创建ASP.NET Web Form文件(.aspx)来为ASP.NET MVC application创建视图。你并不是必须这么做。如果你喜欢,你可以替换掉Web Forms视图引擎,然后使用其它的视图模板引擎。在这篇帖子中,我将演示如何使用nVelocity视图模板引擎。

为什么要使用nVelocity 模板引擎,而不用通常的Web Forms 模板引擎呢?你可能会有几个不同的理由。首先,nVelocity是从Java Apache Software Foundation的 Velocity项目引入到.NET framework版本的。 如果你正在将一个现在的Java 应用程序迁移到.NET平台中,并且该程序使用了Velocity模板引擎,那么使用 nVelocity 模板引擎能够让这个迁移过程更顺利。

其次,与ASP.NET Web Forms的语法相比较而言,你可能更喜欢nVelocity模板引擎的语法。Velocity 模板引擎语言是专门为了创建HTML页面而设计的。Velocity提供给你一个非常干净的语法来实现通用操作,例如循环一批数据库记录,并把每条记录显示在一个HTML页面中(可以认为是HTML领域专用的语言)。

为ASP.NET MVC配置nVelocity

我花了很长时间去弄明白如何配置nVelocity才能让它与ASP.NET MVC一起工作。问题是你必须从两个不同的项目中提取文件,并让它们一起工作(有些程序集隐藏在嵌套文件夹中)。

这里是让nVelocity工作的步骤:

Step 1:

从下面的网站中下载并解压MvcContrib的二进制文件:http://www.CodePlex.com/MvcContrib

Step 2:

从下面的网站中下载并解压Castle项目:http://www.castleproject.org/castle/download.html

Step 3:

当你解压Step 2的文件后,导航到bin目录,解压external-dependencies.zip文件。这个文件包含了nVelocity.dll程序集。

Step 4:

创建一个新的Visual Studio 2008 ASP.NET MVC Application。

Step 5:

添加一个MvcContrib.Castle引用,你可以从Step 1中下载的文件中找到它。(MvcContrib.Castle 程序集是MvcContrib项目的一部分,而不是Castle项目的一部分)

Step 6

添加一个你在Step 3中解压的NVelocity程序集的引用。

有两个重要警告。首先,不要使用http://nvelocity.sourceforge.net/中的nVelocity 程序集。如果你在搜索引擎中搜索nVelocity,这个是搜索结果的第一项。遗憾的是,这个项目自从2003以来还没有被更新过,并且这里的nVelocity已经严重过时了。你应该使用Castle项目中的nVelocity 程序集。

其次,确保你在解压它们之前,没有阻止(Unblock)任何文件。你可以通过右键单击某个文件 -> 选择Properties选项 -> 点击Unblock 按钮,来取消阻止(Unblock)一个文件。如果你未能成功地取消阻止(Unblock)一个压缩文件,那么当你试图在Visual Studio 2008中使用这些文件时,你将会遇到安全问题。

使用nVelocity模板引擎

当你结束上面的这些步骤之后,你就可以开始使用nVelocity 模板引擎了。有两种方式指示ASP.NET MVC framework你要使用nVelocity模板引擎,而不是通常的Web Forms模板引擎。

首先,你可以在返回一个View之前,修改controller action中的ViewEngine属性。例如,在代码清单中的HomeController为Index() action使用了nVelocity。

Listing 1 – HomeController.cs (C#)

using System.Web.Mvc;

using Tip19.Models;

namespace Tip19.Controllers

using System;

using System.Web.Mvc;

namespace Tip19.Controllers

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

using Tip19.Controllers;

namespace Tip19

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>Untitled Page</title>

</head>

<body>

#foreach( $movie in $Viewdata.Model )

<li><a href="/Home/Edit/$movie.Id">$movie.Title</a></li>

#end

</body>

</html>

代码清单4中的View使用了Velocity 模板语言来显示movies。注意那个for…each代码块是使用Velocity 指令#foreach 和 #end来创建的。注意你使用$来标识变量。因此,你可以用表达式$Viewdata.Model来指代(refer to)ViewData.Model。Velocity是不区分大小写的。

Apache Software Foundation的网站有一个完整的Velocity 语言的参考文档。这个网站也有一个快速入门指导,请看:

http://velocity.apache.org/engine/releases/velocity-1.5/vtl-reference-guide.html

http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html

总结

在这篇帖子中,我演示了如何在ASP.NET MVC application中使用nVelocity 模板引擎。我展示了两种方法来替换默认使用的Web Forms视图引擎。你展示了如何为一个特定的controller action指定一个特定的视图引擎,以及如何为所有的controller action指定一个特定的视图引擎。

我当然并不是推荐你放弃Web Forms视图引擎而改用nVelocity。我这篇帖子真正的目的是演示了ASP.NET MVC的灵活性。如果你不喜欢ASP.NET MVC framework的任何一个部分,你都可以选择替换掉它。

下载代码:http://weblogs.asp.net/blogs/stephenwalther/Downloads/Tip19/Tip19.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: