Razor视图基本语法

ASP.NET MVC 3及以上版本中,多了一种新的视图引擎——Razor。与原来的aspx视图比起有很多优点。下面详细说说Razor视图的基本语法。

1.代码和标签混合

aspx视图:

<ul id="products">
    <% foreach(var p in products){ %>
        <li><%=p.Name%> ($<%=p.Price%>)</li>
    <% } %>
</ul>
相对于以上的aspx视图,Razor表示为:

<ul id="products">
    @foreach(var p in products) {
        <li>@p.Name ($@p.Price)</li>
    }
</ul>


2.代码块

aspx视图:

<%
    int x=123;
    string y="because.";
%>
Razor视图:

@{
    int x=123;
    string y="beacuse.";
}


3.渲染输出

3.1 经过HTML编码。指变量中若有HTML元素,HTML元素以文本的形式输出。

aspx视图:

<span><%: model.Message %></span>
Razor视图:

<span>@model.Message</span>
3.2 未经过HTML编码。指变量中若有HTML元素,HTML元素会进行渲染。

<span><%= model.Message %></span>
Razor视图:

<span>@Html.Raw(model.Message)</span>


4.代码与纯文本混合

aspx视图:

<% if(foo) { %>
        Plain Text
<% } %>

Razor视图(2种表示法,<text>标签是Razor中新增的标签,不会在HTML中渲染出来,它是说明<text>里面是一段纯文本):

@if(foo) {
       <text>Plain Text</text>
}

或者:

@if(foo) {
       @:Plain Text
}


5.表达式与文本混合
aspx视图(变量后面的点,就是普通的点):

Hellow <%: title %>. <%: name %>.
Razor视图(变量后面的点,就是普通的点):

Hellow @title. @name.


6.直接识别Email地址

diqiu@qq.com(因为@前面没有空格或截断)

7.@符号(两个连续的@@符号会被渲染为一个@符号)

<span>In Razor, you use the @@foo to display the value of foo</span>


8.显式渲染输出

当要渲染输出的代码@前无空格或标记位时,我们需要使用小括弧进行显式的渲染输出,小括弧里可以是变量、表达式......

<span>ISBN@(isbnNumber)</span>


9.服务器端注释(用户在页面中无法看到注释)

aspx视图:

<%--This is not hear--%>
Razor视图:

@*This is not hear*@


10.渲染输出动态方法

对于动态方法返回值之类的输出我们使用小括弧将代码闭合起来即可

@(MyClass.MyMethod<AType>())


11.创建Razor委托(创建好以后,b可以多处使用)

@{
       Func<dynamic, object> b=@<stong>@item</strong>
}
@b("Blod this")


12.内容中混合代码

<ul>
    @foreach(var p in products) {
       <li>
           @p.ProductName

           @if(p.UnitsInStock==0) {
                  @:(Out of stock!)
           }
           else if(p.UnitsInStock<4) {
                  @:(Only @p.UnitsInStock left!)
           }
       </li>
    }
</ul>

13.多行内容混合代码

外面有标签,会自动换行:

@if(p.UnitsInStock==0){
       <p>
             Line one of content
             Line two of content
             Date is: @DateTime.Now
             Line four of content
       </p>
}
内容外部没有html标记包装时:

@if(p.UnitsInStock==0){
        @: Line one of content
        @: Line two of content
        @: Line three of content
}
或者:

@if(p.UnitsInStock==0){
       <text>
            This is a book of center
            Hellow Toney mannj
            nuggest is: @DateTime.Now
            Isn't that neat?
       </text>
}



详细参考:http://edu.51cto.com/lesson/id-14584.html




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值