在MonoRail中同样提供了这种机制,可以方便的处理布局和一些整体风格。
使用方式很简单,主要就是Layout属性:
LayoutController.cs
1 [Layout("/master")]
2 public class LayoutController : Controller
3 {
4 public void Index()
5 {
6 //LayoutName = "/master2";
7
8 }
9 }
表示这个Controller里面所有的vm都是使用/master的布局设置。其中第六行注释放开之后可以动态更换一个布局2 public class LayoutController : Controller
3 {
4 public void Index()
5 {
6 //LayoutName = "/master2";
7
8 }
9 }
/views/master.vm
<html>
<body>
$!head <br/>
Welcome!
<p>$childContent</p>
$!footer
</body>
</html>
指定了三个区域,就相当于三个Asp.net中的内容一样,其中$childContent是固定名称的<body>
$!head <br/>
Welcome!
<p>$childContent</p>
$!footer
</body>
</html>
/views/layout/index.vm
#capturefor(head)
11111
#end
Inner Content
#capturefor(footer)
22222
#end
最后显示的结果就是两个vm结合后的页面显示11111
#end
Inner Content
#capturefor(footer)
22222
#end
如果熟悉Asp.net中的母版页的话应该很好理解的
本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/11/01/945417.html,如需转载请自行联系原作者