您的位置:首页 > 其它

MVC Razor 语法

2014-03-26 11:06 453 查看
原文地址: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
plaincopyprint?

@using :引入命名空间  

@model:声明强类型的数据Model类型  

@section:定义要实现母版页的节信息   

@RenderBody():当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。  

@RenderPage:呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:          

                @RenderPage("~/Views/Shared/_Header.cshtml")  

@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>())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: