Razor语法的快捷参考http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/
只是copy下来便于查阅!
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 it’s 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 | Razor | Web Forms Equivalent (or remarks) |
---|---|---|
Code Block |
@{ |
<% |
Expression (Html Encoded) |
<span>@model.Message</span> |
<span><%: model.Message %></span> |
Expression (Unencoded) |
<span> |
<span><%= model.Message %></span> |
Combining Text and markup |
@foreach(var item in items) { |
<% foreach(var item in items) { %> |
Mixing code and Plain text |
@if (foo) { |
<% if (foo) { %> |
Using block |
@ using (Html.BeginForm()) { |
<% using (Html.BeginForm()) { %> |
Mixing code and plain text (alternate) |
@if (foo) { |
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 |
@@ renders a single @ in the response. |
Server side Comment |
@* |
<%-- |
Calling generic method |
@(MyClass.MyMethod<AType>()) |
Use parentheses to be explicit about what the expression is. |
Creating a Razor Delegate |
@{ |
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 %>. |
NEW IN RAZOR v2.0/ASP.NET MVC 4 | ||
Conditional attributes |
<div class="@className"></div> |
When className = null
<div></div> When <div class=""></div> When <div class="my-class"></div> |
Conditional attributes with other literal values |
<div class="@className foo bar"> |
When className = null
<div class="foo bar"></div> Notice the leading space in front of <div class="my-class foo bar"> |
Conditional data-* attributes.
data-* attributes are always rendered. |
<div data-x="@xpos"></div> |
When xpos = null or ""
<div data-x=""></div> When <div data-x="42"></div> |
Boolean attributes |
<input type="checkbox" |
When isChecked = true
<input type="checkbox"
<input type="checkbox" /> |
URL Resolution with tilde |
<script src="~/myscript.js"> |
When the app is at /
<script src="/myscript.js"> When running in a virtual application named <script src="/MyApp/myscript.js"> |
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 it’s 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:I’ve 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!
Also, if you want to know more, consider buying the Progamming ASP.NET MVC 4 book. Full disclosure, I'm one of the authors, but the other three authors are way better.