在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中的母版页的话应该很好理解的