📅  最后修改于: 2020-11-21 05:27:14             🧑  作者: Mango
ASP.NET中的View Engine用于将视图转换为HTML,然后将其呈现给浏览器。默认情况下,ASP.Net支持ASPX和Razor View Engine 。视图引擎模板的语法与实现不同。在本章中,我们将讨论两个最重要的视图引擎-
ASPX View Engine也称为Web Form View Engine和
剃刀视图引擎
还有更多的第三方视图引擎,例如Spark,Nhaml等。
ASPX或Web表单引擎是ASP.NET的默认视图引擎,ASP.NET MVC从一开始就包含它。
使用ASPX View Engine编写视图的语法与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 View Engine使用的“ <%%>”。
对于C#语言,Razor文件扩展名是“ cshtml”。
默认情况下,Razor View Engine在呈现之前进行编码以对HTML标记或脚本进行编码,从而避免跨站脚本攻击。
与ASPX View Engine相比,Razor View Engine速度较慢。
为了理解语法上的差异,让我们看一个用ASPX和Razor视图引擎编写的简单示例。以下是ASPX视图引擎的代码片段。
is going to next grade.
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之类的可视编辑器不支持它。