语法名称 | Razor 语法 | Web Forms 等效语法 |
---|---|---|
代码块 | @{ int x = 123; string y = "because."; } | <% int x = 123; string y = "because."; %> |
表达式(默认encode) | <span>@model.Message</span> | <span><%: model.Message %></span> |
表达式(不encode) | <span> @Html.Raw(model.Message) </span> | <span><%= model.Message %></span> |
结合文本和标记的循环 | @foreach(var item in items) { <span>@item.Prop</span> } | <% foreach(var item in items) { %> <span><%: item.Prop %></span> <% } %> |
代码和文本混合 | @if (foo) { <text>Plain Text</text> } | <% if (foo) { %> Plain Text <% } %> |
代码和文本混合
| @if (foo) { @:Plain Text is @bar } | 同上 |
Email 地址 | Hi philha@example.com | Razor 认识基本的邮件格式.可智能识别. |
显示表达式 | <span>ISBN@(isbnNumber)</span> | 在括号里可以有些简单的操作.扩展一下就是@(20*pageIndex) 输出运算结果 |
输出@符号
| <span>In Razor, you use the @@foo to display the value of foo</span> | 要显示@符号,用两个@符号"@@"表示. |
服务器端注释 | @* This is a server side multiline comment *@ | <%-- This is a server side multiline comment --%> |
调用一个方法 | @(MyClass.MyMethod<AType>()) | 使用括号来明确表达是什么. |
创建一个Razor委托 | @{ Func<dynamic, object> b = @<strong>@item</strong>; } @b("Bold this") | 更多信息查看 |
混合表达式和文本 | Hello @title. @name. <p>@(name).Models</p> 输出 YouName.Models | Hello <%: title %>. <%: name %>. @name.Models 出错 name没有Models 属性 |
希望对您有所帮助.
补充一个在View的脚本Script中显示JSON对象的方法
需求:var data=[{id:1,title="标题1},{id:2,title="标题2"}]
实现:var data=@Html.Raw(@Newtonsoft.Json.JavaScriptConvert.SerializeObject(Model))
用Json.Net转换一下再Raw输出即可
基本语法
- @using :引入命名空间
- @model:声明强类型的数据Model类型
- @section:定义要实现母版页的节信息
- @RenderBody():当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
- @RenderPage:呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
- @RenderPage("~/Views/Shared/_Header.cshtml")
- @RenderSection:布局页面还有节(Section)的概念,便于局部呈现
1.行内(inline)C#(服务器端代码)形式(行内代码)
2. 代码块
第一种情况:
@{ 代码块 }
@if (条件) { 代码块 }
@switch (条件) { 分支匹配代码块 }
@for (循环控制) { 代码块 }
@foreach (循环控制) { 代码块 }
@while (循环控制) { 代码块 }
@do { 代码块 } while (循环控制) 『 代码块里面的代码要严格按照c#语法来,每行结束必需有分号』
第二种情况:(代码块中的文本或者Html客户端标签)
单行文本
@:行内文本 换行的话自动变成了C#服务器端代码。
多行文本
任何标签对 例如:<div>多行文字</div>
任何自闭合标签 例如:<img 多行属性 />
纯文字使用伪标签<text> 例如:<text>多行文字,两侧标签不会被输出</text>
3.其他
电子邮箱可以自动识别,例如:123456@qq.com
被误认为是电子邮箱的请加括号(),例如:123456(@UserName)
要输出商标版权等的,请用@字符转义,例如:@@ →会输出单个字符@
@if(showMessage){
<text>This is plain text</text>
}
等同
@if(showMessage){
@:This is plain text
}
调用泛型 @(Html.SomeMethod<AType>())