ASP.NET中的View Engine用于将我们的视图转换为HTML,然后将它们呈现给浏览器.默认情况下,ASP.Net支持 ASPX 和 Razor View引擎.视图引擎模板具有与实现不同的语法.在本章中,我们将讨论两个最重要的视图引擎:
ASPX View Engine也称为Web表单视图引擎和
Razor View引擎
有更多第三方视图引擎,如 Spark,Nhaml 等.
ASPX或Web表单引擎是ASP.NET的默认视图引擎,它从一开始就包含在ASP.NET MVC中.
用于使用ASPX视图引擎编写视图的语法与ASP.NET Web表单中使用的语法相同.
文件扩展名也是与ASP.NET Web表单相同(如.aspx,.ascx,.master).
ASPX使用"<%=%>"或"<%:%>"提供服务器端内容.
Webform Engine的命名空间是 System.Web.Mvc.WebFormViewEngine .
默认情况下,ASPX View Engine无法避免跨站点脚本攻击.
ASPX View Engine比Razor View Engine快.
Razor Engine是一款先进的使用 MVC3 引入的视图引擎.它不是一种新语言,但它是一种新的标记语法.
Razor语法基于C#编程语言.
Razor语法也支持Visual Basic语言,我们将使用C#做的所有事情,你也可以在Visual Basic中完成所有这些.
Razor Engine的命名空间是 System.Web.Razor .
Razor使用"@"字符代替"< %%>"正如ASPX视图引擎所使用的那样.
Razor文件扩展名为C#语言的"cshtml".
默认情况下,Razor View Engine会在呈现html标记或脚本之前对其进行编码,以避免跨站点脚本攻击.
与ASPX View引擎相比,Razor View引擎速度较慢.
要了解语法差异,让我们看一下用ASPX和Razor视图引擎编写的简单示例.以下是ASPX视图引擎的代码片段.
<%foreach (var student in Students){ %> <% if (student.IsPassed){ %> <% = student.FirstName%> is going to next grade. <% } else{ %> <% = student. FirstName %> is not going to next grade. <% } %> <% } %>
以下是用Razor View引擎编写的相同示例代码.
@foreach (var student in Students){ @if(student.IsPassed){ @student. FirstName is going to next grade. } else { @student. FirstName is not going to next grade. } }
如果你看一下上面用ASPX和Razor语法编写的代码片段,那么你可以看得很清楚与ASPX语法相比,Razor语法简洁明了. Razor的一个缺点是,Dream Viewer等视觉编辑器不支持它.