MVC Razor 语法

原文地址:MVC Razor 语法(转) 作者: panzhaowen_jacki
语法名称 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")
更多信息查看 this blog post .
混合表达式和文本
 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输出即可


基本语法

[csharp]  view plain copy print ?
  1. @using :引入命名空间  
  2. @model:声明强类型的数据Model类型  
  3. @section:定义要实现母版页的节信息   
  4. @RenderBody():当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。  
  5. @RenderPage:呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:          
  6.                 @RenderPage("~/Views/Shared/_Header.cshtml")  
  7. @RenderSection:布局页面还有节(Section)的概念,便于局部呈现  

1.行内(inline)C#(服务器端代码)形式(行内代码

@变量例如:@User.Name,变量或属性结束后,任何形式文本或者标签都自动被解析为html,如遇结束判断有歧义,请加括号如下
@( 表达式 )  例如:@(i + 1) 或 @(User.Name)    括号里面为:表达式,或者变量
@方法调用  例如:@Html.TextBox("UserName").ToString()

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>())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值