ASP.NET MVC 3.0 Razor 学习笔记之四

ASP.NET 3.0 Razor 的@:语法:

     Razor尽量减少编写一个视图模板需要敲入的字符数,实现快速流畅的编程工作流。与大部分模板的语法不同,你不必在HTML中为了明确地标记出服务器端语句块的开始和结束而中断编程。Razor解析器足够聪明,能从你的代码中推断出来。这样就使得语法简洁明了,可以干净、快速和有趣地输入代码。

 

    <table>
        @foreach (var item in ViewBag.UserList)
        {
            <tr>
                <td>
                    name is
                </td>
                <td>
                    @item.Name
                </td>
            </tr> 
        }
    </table>

 Razor用来隐式鉴别一个代码段什么时候结束的一个方法是寻找代表内容块开始的标记或元素内容。例如,在上面的代码段中Razor自动地把foreach循环里面的<li></li>模块当作一个HTML内容块,因为它看到开始的<li>标   记序列并且知道这在C#中是无效的。

  这个独特的技术——使用标记来识别代码中的内容块——是使Razor在涉及HTML生成的情况下简洁高效的一个重要因素。

  使用@标示语法的开始。

  然而不是所有的内容块都是以标记元开始,在有些案例中,Razor解析器不能隐式检测出内容块。

  这就需要Razor通过在代码块中使用“@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:

 

      @if (ViewBag.UserList)
        {
               @:  UserList is Collections
        }

举个更实际的例子。下面的代码段显示集合里面是否包含liuyong

<table>
        @foreach (var item in ViewBag.UserList)
        {
            <tr>
                <td>
                    @if(item.Name=="liuyong")
                    {
                        @:(Collections  contain liuyong);
                    }
                </td>
            </tr> 
        }
    </table>

  Razor使在HTML元素中包装多行内容变得简单。例如,下面我们的@if容器中的内容块被包装在一个HTML<p>元素中,这会使得Razor把它当作内容:

  @foreach (var item in ViewBag.UserList)
        {
            <tr>
                <td>
                    @if(item.Name=="liuyong")
                    {
                       <p>
                         Line one of content 
                         Line Tow of content 
                         Date is @DateTime.Now
                         Line four of content 
                       </p>
                    }
                </td>
            </tr> 
        }

Razor允许你用一个<text>元素 来显式标识内容:

  @foreach (var item in ViewBag.UserList)
        {
            <tr>
                <td>
                    @if(item.Name=="liuyong")
                    {
                        <text>
                           this is a multi-line  block of content.
                           the text tag wraps us and will be removed by the 
                           razor parser . we can still have code 
                           nuggets too: @DateTime.Now
                           isn't that neat ?
                        </text>
                    }
                </td>
            </tr> 
        }

 这篇就写到这里吧,简单的介绍!

posted @ 2011-02-25 16:21  jackyong  阅读(1104)  评论(0编辑  收藏  举报