ASP.NET WP - 视图引擎
ASP.NET 中的视图引擎用于将视图转换为 HTML,然后将它们呈现到浏览器。 默认情况下,ASP.Net 支持 ASPX 和 Razor View Engine。 视图引擎模板的语法与实现不同。 在本章中,我们将讨论两个最重要的视图引擎: −
ASPX 视图引擎也称为 Web 表单视图引擎
Razor 视图引擎
还有更多第三方视图引擎,例如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 视图引擎不会采取任何措施来避免跨站点脚本攻击。
ASPX 视图引擎比 Razor 视图引擎相对更快。
Razor 视图引擎
Razor Engine 是随 MVC3 引入的高级视图引擎。 它不是一种新语言,而是一种新的标记语法。
Razor 语法基于 C# 编程语言。
Razor 语法还支持 Visual Basic 语言,我们将使用 C# 执行的所有操作,您也可以在 Visual Basic 中执行。
Razor 引擎的命名空间是 System.Web.Razor。
Razor 使用"@"字符而不是 ASPX 视图引擎使用的 "<% %>" 。
对于 C# 语言,Razor 文件扩展名为"cshtml"。
默认情况下,Razor View Engine 在渲染 html 标签或脚本之前对其进行编码,以避免跨站点脚本攻击。
与 ASPX 视图引擎相比,Razor 视图引擎较慢。
语法差异
为了理解语法差异,让我们看一下用 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 等可视化编辑器的支持。