TOC

This article is currently in the process of being translated into Chinese (~92% done).

Razor:

Introduction

微软最初设计ASP.NET MVC框架时,它使用WebForm页面来展示内容。然而,WebForm并不像人们所使用的其他MVC框架一样灵活,它在ViewState、服务器控件等方面都存在巨大的开销。因此,微软决定为MVC框架设计一个更简单、更轻量的语言(视图引擎)。他们称其为Razor,并在2011年1月作为ASP.NET MVC 3的一部分发布。

根据你喜欢的.NET语言,Razor能够让你以多种语言来编写。在本教程中,我们会关注Razor的C#版本,不过,你也可以通过VB.NET来使用Razor。

为什么使用Razor?

Razor最大的优点是你能够混合地使用客户端标记语言(HTML)和服务端代码(C#或VB.NET),并且不需要显示地标识两个语法的开始与结束标记。例如,以下这个是ASP.NET WebForm中一个页面的示例:

<p>Hello, world - my name is <%= name %> and the current date is: <%= DateTime.Now.ToString() %></p>

在Razor中,你只要简单地带一个@前缀,就可以引用服务端代码的变量。以上例子使用Razor的方式写编写,是这样的:

<p>Hello, world - my name is @name and the current date is: @DateTime.Now.ToString()</p>

很明显,这个基本的示例,两者写法看起来区别并不大,然而当代码变得很长后,使用Razor会更容易、更快捷地编写包含代码和标记的页面。当你想做一些更高级的操作时,比如在视图中添加一个条件判断,Razor的这一优势将会更明显。

<%
if(Request.QueryString["test"] != null)
{
%>
    <p>Lots of markup here...</p>
    <p>Test value: <b><%= Request.QueryString["test"] %></b></p>
    <p>And even more here...</p>
<%
}
%>

在Razor中,要实现同样的目的,你可以这样写:

@if(Request.QueryString["test"] != null)
{
    <p>Lots of markup here...</p>
    <p>Test value: <b>@Request.QueryString["test"]</b></p>
    <p>And even more here...</p>
}

总结

正如你从上面的示例中所看到的,Razor使标记和代码的组合变得更为简单。在接下来的几章中,我们将深入研究Razor语法及其工作原理。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!