ASP.NET WP - 查看引擎

ASP.NET中的View Engine用于将我们的视图转换为HTML,然后将它们呈现给浏览器.默认情况下,ASP.Net支持 ASPX Razor View引擎.视图引擎模板具有与实现不同的语法.在本章中,我们将讨论两个最重要的视图引擎:

  • ASPX View Engine也称为Web表单视图引擎和

  • Razor View引擎

有更多第三方视图引擎,如 Spark,Nhaml 等.

ASPX视图引擎

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 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等视觉编辑器不支持它.