• Razor之代码复用


    原文:http://www.cnblogs.com/youring2/archive/2011/07/26/2115493.html

    1.布局(Layout)复用

    Layout的使用,就像WebForm的模板页一样,甚至会更加简单,更加方便和明了。要使用Layout,首先要在模板页相应的位置添加@RenderBody()方法:

    <!DOCTYPE html>
    
    <html>
        <head>
            <meta charset="utf-8"/>
            <title>测试网站 - @Page.Title</title>
        </head>
        <body>
            @RenderBody()
        </body>
    </html>

    在要使用模板页的页面中,指定所使用的模板页:

    @{
        Layout = "/LayoutPage.cshtml";
        Page.Title = "第一个子页面";
    }
    
    <p>This is a layout test</p>

    Layout的加载顺序不同于模板页,它是先加载子页,然后再加载布局页的。

    2.页面(Page)复用

    在Razor中,我们可以轻松的在页面中输出另一个页面的HTML代码:

    <p>
        @RenderPage("/SubPage.cshtml")
    </p>

    SubPage的代码如下:

    <font color="red">这是一个子页面</font>

    3.Section

    Section是在布局页(Layout Page)中使用的东西,在使用了布局页的子页面中定义Section的内容,布局页才能够使用。如果Page1.cshtml页面使用了布局页Layout.cshtml,那么,我们可以在Page1.cshtml中定义Section:

    @section header{
        <b>Header Section</b>
    }
    
    @section footer{
        <b>footer Section</b>
    }

    Layout.cshtml的代码:

    <body>
            @RenderSection("header");
    
            @RenderBody()
    
            @RenderSection("footer");
    </body>

    4.Helper复用

    Helper是用来简化代码编写的,通常用来处理输出。例如,我们可以为一个模型构建一个Helper,用来处理该模型的Html输出;再比如,我们为系统菜单创建一个Helper,方便我们使用。

    定义Helper,需要使用@helper标记,在该标记后面添加名称和相应的代码:

    @helper MenuEx(params string[] strs){
        <ul>
            @foreach(string str in strs){
                <li>@str</li>
            }
        </ul>
    }

    这种写法非常类似与类的静态方法,在这个MenuEx中,需要传递字符串数组作为参数。

    另外,我们通常会把一类Helper放在一个cshtml文件中,这个文件名就相当于类名。例如MenuEx放在文件 HelperEx.cshtml文件中,在Page1.cshtml中的使用方法如下:

    <p>
        @HelperEx.MenuEx("Microsoft", "IBM", "Apple", "Google")
    </p>

    这是我们自定义的内容,另外,系统还为我们提供了一些列的Helper,用来简化Html的书写。这些Helper放在@Html中,我们可以方便的使用:

    <p>
        @Html.TextBox("txtName")
    </p>
  • 相关阅读:
    删除表空间 数据库备份 创建用户
    javax.persistence包
    JNDI
    J2EE中关于session 的生命周期
    多表关联
    归档程序错误。在释放之前仅限于内部连接
    spring集成jpa
    Tree.Panel各项属性
    eclipse调试以及step into step over step return区别
    wininet.dll函数库:不会过期的cookie
  • 原文地址:https://www.cnblogs.com/weekend001/p/3649899.html
Copyright © 2020-2023  润新知