Introduction
When Microsoft first created the ASP.NET MVC framework, it used WebForms pages to display content. However, WebForms wasn't as flexible as people were used to from other MVC frameworks - it had too much overhead in the form of ViewState, server controls etc. Therefore, Microsoft decided to implement a much simpler and more lightweight language/view engine for the MVC framework. They called it Razor and it was released in January 2011, as a part of ASP.NET MVC version 3.
Razor allows you to write in various "dialects", based on your favorite .NET language. In this tutorial, we will be focusing on the C# version of Razor, but you can use Razor with VB.NET as well.
Why use Razor?
The biggest advantage of the Razor is the fact that you can mix client-side markup (HTML) with server-side code (e.g C# or VB.NET), without having to explicitly jump in and out of the two syntax types. For instance, consider this example of a page in ASP.NET WebForms:
<p>Hello, world - my name is <%= name %> and the current date is: <%= DateTime.Now.ToString() %></p>
In Razor, you can reference server-side variables etc. by simply prefixing it with an at-character (@). The above example, written with Razor instead, would look like this:
<p>Hello, world - my name is @name and the current date is: @DateTime.Now.ToString()</p>
Now obviously this basic example doesn't save you a ton of keystrokes, but in the long run, this makes it a lot easier and much faster to build your pages and combine markup with code. This becomes more obvious when you want to do something slightly more advanced, like making a conditional statement in your view:
<%
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>
<%
}
%>
In Razor, you could achieve the same like this:
@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>
}
Summary
As you can see from the above examples, Razor simply makes it a whole lot easier to combine markup and code. In the next couple of chapters, we'll take a deeper look into the Razor syntax and how it works.