Bookmark and Share BitCoin Donate: 13t8gAWVpHP2ddxMp88d1NFpZjnFJC6UwK

Quick reference to Razor syntax

Syntax/SampleRazorWeb Forms Equivalent (or remarks)
Code Block
@{ 

  int x = 123; 

  string y = "because.";

}
<%

  int x = 123; 

  string y = "because."; 

%>
Expression (Html Encoded)
<span>@model.Message</span>
<span><%: model.Message %></span>
Expression (Unencoded)
<span>
@Html.Raw(model.Message) </span>
<span><%= model.Message %></span>
Combining Text and markup
@foreach(var item in items) {

  <span>@item.Prop</span> 

}
<% foreach(var item in items) { %>

  <span><%: item.Prop %></span>

<% } %>
Mixing code and Plain text
@if (foo) {

  <text>Plain Text</text> 

}
<% if (foo) { %> 

  Plain Text 

<% } %>
Mixing code and plain text (alternate)
@if (foo) {

  @:Plain Text is @bar

}
Same as above
Email Addresses
Hi philha@example.com
Razor recognizes basic email format and is smart enough not to treat the @ as a code delimiter
Explicit Expression
<span>ISBN@(isbnNumber)</span>
In this case, we need to be explicit about the expression by using parentheses.
Escaping the @ sign
<span>In Razor, you use the 

@@foo to display the value 

of foo</span>
@@ renders a single @ in the response.
Server side Comment
@*

This is a server side multiline comment 

*@
<%-- This is a server side multiline comment --%>
Calling generic method
@(MyClass.MyMethod<AType>())
Use parentheses to be explicit about what the expression is.
Creating a Razor Delegate
@{

  Func<dynamic, object> b = 

   @<strong>@item</strong>;

}

@b("Bold this")
Generates a Func<T, HelperResult> that you can call from within Razor. See this blog post for more details.
Mixing expressions and text
Hello @title. @name.
Hello <%: title %>. <%: name %>.

Taken from Phil Haack