0% found this document useful (0 votes)
214 views

C# Razor Syntax Quick Reference

Razor is a view engine for ASP.NET MVC that allows mixing HTML markup with server-side code. This document provides a quick reference to common Razor syntax constructs like code blocks, expressions, conditional attributes, and URL resolution helpers in 3 sentences or less. It includes syntax examples for features like embedding C# code, conditionally rendering content, and escaping characters. The reference is intended to be a concise guide to the basics of the Razor view engine syntax.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
214 views

C# Razor Syntax Quick Reference

Razor is a view engine for ASP.NET MVC that allows mixing HTML markup with server-side code. This document provides a quick reference to common Razor syntax constructs like code blocks, expressions, conditional attributes, and URL resolution helpers in 3 sentences or less. It includes syntax examples for features like embedding C# code, conditionally rendering content, and escaping characters. The reference is intended to be a concise guide to the basics of the Razor view engine syntax.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

C# Razor Syntax Quick Reference

January 6, 2011 asp.net mvc, asp.net, code 82 Comments edit


I gave a presentation to another team at Microsoft yesterday on ASP.NET MVC and the Razor
view engine and someone asked if there was a reference for the Razor syntax.
It turns out, there is a pretty good guide about Razor available, but its focused on covering the
basics of web programming using Razor and inline pages and not just the Razor syntax.
So I thought it might be handy to write up a a really concise quick reference about the Razor
syntax.
Syntax/Sample
Code Block

Expression (Html
Encoded)
Expression (Unencoded)
Combining Text and
markup

Mixing code and Plain text


Mixing code and plain text
(alternate)
Email Addresses

Explicit Expression

Escaping the @ sign


Server side Comment

Razor
@{

Web Forms Equivalent (or


remarks)
<%

int x = 123;
string y = "because.";

int x = 123;
string y = "because.";

%>

<span>@model.Message</span>

<span><%: model.Message
%></span>

<span>
<span><%= model.Message
@Html.Raw(model.Message)
%></span>
</span>
@foreach(var item in items) { <% foreach(var item in
<span>@item.Prop</span>
items) { %>
}
<span><%: item.Prop
%></span>
<% } %>
@if (foo) {
<% if (foo) { %>
<text>Plain Text</text>
Plain Text
}
<% } %>
@if (foo) {
Same as above
@:Plain Text is @bar
}
Hi philha@example.com
Razor recognizes basic email

format and is smart enough not


to treat the @ as a code
delimiter
<span>ISBN@(isbnNumber)</span> In this case, we need to be
explicit about the expression
by using parentheses.
<span>In Razor, you use the
@@ renders a single @ in the
@@foo to display the value
response.
of foo</span>
@*

<%--

Calling generic method

This is a server side


multiline comment
*@
@(MyClass.MyMethod<AType>())

Creating a Razor Delegate @{

Func<dynamic, object> b =
@<strong>@item</strong>;

}
@b("Bold this")
Hello @title. @name.

This is a server side


multiline comment
--%>

Use parentheses to be explicit


about what the expression is.
Generates a Func<T,
HelperResult> that you can
call from within Razor. See
this blog post for more details.

Hello <%: title %>. <%:


Mixing expressions and
name %>.
text
NEW IN RAZOR v2.0/ASP.NET MVC 4
<div class="@className"></div> When className = null
Conditional attributes
<div></div>
When className = ""
<div class=""></div>
When className = "myclass"
<div class="myclass"></div>

Conditional attributes with <div class="@className foo


bar">
other literal values
</div>

When className = null


<div class="foo
bar"></div>

Notice the leading space in


front of foo is removed.
When className = "myclass"
<div class="my-class foo
bar">
</div>

Conditional data-*
attributes.
data-* attributes are
always rendered.
Boolean attributes

<div data-x="@xpos"></div>

When xpos = null or ""


<div data-x=""></div>
When xpos = "42"
<div data-x="42"></div>

<input type="checkbox"
checked="@isChecked" />

URL Resolution with tilde <script src="~/myscript.js">


</script>

When isChecked = true


<input type="checkbox"
checked="checked" />
When isChecked = false
<input type="checkbox" />

When the app is at /

<script
src="/myscript.js">
</script>

When running in a virtual


application named MyApp
<script
src="/MyApp/myscript.js">
</script>

Notice in the mixing expressions and text example that Razor is smart enough to know that the
ending period is a literal text punctuation and not meant to indicate that its trying to call a
method or property of the expression.
Let me know if there are other examples you think should be placed in this guide. I hope you
find this helpful.
UPDATE 12/30/2012:Ive added a few new examples to the table of new additions to Razor
v2/ASP.NET MVC 4 syntax. Razor got a lot better in that release!

You might also like