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>