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>
Razor之代码复用的更多相关文章
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- Atitit 代码复用的理解attilax总结
Atitit 代码复用的理解attilax总结 1.1. 继承1 1.1.1. 模式1:原型继承1 1.1.2. 模式2:复制所有属性进行继承 拷贝继承1 1.1.3. 模式3:混合(mix-in)1 ...
- javascript 模式(1)——代码复用
程序的开发离不开代码的复用,通过代码复用可以减少开发和维护成本,在谈及代码复用的时候,会首先想到继承性,但继承并不是解决代码复用的唯一方式,还有其他的复用模式比如对象组合.本节将会讲解多种继承模式以实 ...
- HTML 代码复用实践 (静态页面公共部分提取复用)
原文:HTML 代码复用实践 上面的链接里面安装配置步骤已经非常详细,这里主要记录我操作过程中遇到的几个问题 gulp-file-include 的使用 按上面的步骤安装之后,node_mod ...
- 《JavaScript模式》第6章 代码复用模式
@by Ruth92(转载请注明出处) 第6章:代码复用模式 GoF 在其著作中提出的有关创建对象的建议原则: -- 优先使用对象组合,而不是类继承. 传统模式:使用类继承: 现代模式:"类 ...
- javascript代码复用(四)-混入、借用方法和绑定
这篇继续说js的现代复用模式:混入.借用方法和绑定. 混入 可以针对前面提到的通过属性复制实现代码复用的想法进行一个扩展,就是混入(mix-in).混入并不是复制一个完整的对象,而是从多个对象中复制出 ...
- javascript代码复用模式(二)
前面说到,javascript的代码复用模式,可分为类式继承和非类式继承(现代继承).这篇就继续类式继承. 类式继承模式-借用构造函数 使用借用构造函数的方法,可以从子构造函数得到父构造函数传任意数量 ...
- javascript代码复用模式
代码复用有一个著名的原则,是GoF提出的:优先使用对象组合,而不是类继承.在javascript中,并没有类的概念,所以代码的复用,也并不局限于类式继承.javascript中创建对象的方法很多,有构 ...
- 代码复用 -- 深入了解javascript
/* 代码复用 */ /* 一.避免 */ /* 模式1:默认模式 */ function Parent() { this.name = "123"; } Parent.proto ...
随机推荐
- 转:OK6410内存及启动流程
一.内存 只是从大体上介绍,并没有涉及寄存器的操作 6410的系统资源为:256MB DDR .2GB NANDFlash 如下图所示: ROM是只读存储器,RAM是随机存储器. 区别: 1.ROM( ...
- 对 cloudwu 简单的 cstring 进行简单解析
题外话 以前也用C写过字符串,主要应用的领域是,大字符串,文件读取方面.写的很粗暴,用的凑合着.那时候看见云风前辈的一个开源的 cstring 串. 当时简单观摩了一下,觉得挺好的.也没细看.过了较长 ...
- 算法:C++排列组合
题目:给定1-n数字,排列组合. 解法:递归.第一个数字有n种选择,第二个数字有n-1种选择,依次递归排列输出.用数组表示n个数字,用过的数字置0. 实现语言:C++ #include <ios ...
- Introduction to Haskell
"I know why you're here. ...why you hardly sleep, why night after night, you sit by your comput ...
- UIGestureRecongnizer 手势检测 swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- plist 读取 swift
// // ViewController.swift // plist读写 // // Created by mac on 15/7/13. // Copyright (c) 2015年 fangyu ...
- 微软职位内部推荐-Senior Software Development Engineer H/F
微软近期Open的职位: Microsoft Engineering Center Paris (Xbox Music et Video) : Ingénieur en développement l ...
- NABC的特点分析
题目: 请把采用卡片分类的方法讨论你们的团队开发项目特点,再按照 NABC 的框架分析每个特点. 每一个组员针对其中的一个特点将NABC的分析结果发表博 ...
- Github的使用以及Git的简单入门 - 课程作业三
GitHub创建项目 登录GitHub,在个人主页创建项目(repository) 创建后会生成2个文件,README.md和.gitignore.如图 创建本地仓库 如果是第一次使用git的话,需要 ...
- 5方与5W
方案:方位(角色).方向.方针.方式.方法 解答5W2H 轻重.缓急.深浅