使用MVC动态分配母版页

时间:2008-10-20 11:37:52

标签: asp.net-mvc

使用webforms时,将主页面动态分配到页面的适当位置似乎是PreInit事件页面:

this.Master.MasterPageFile = "~/leaf.Master"

如果是nessasary,也可以在此处设置嵌套母版层次结构中的母版页:

this.Master.MasterPageFile = "~/leaf.Master"
this.Master.Master.MasterPageFile = "~/root.Master"

使用MVC框架,您可以使用控制器View方法通过传递 masterName 动态设置单个母版页名称,但是如何在层次结构中将其他母版页设置得更高?

更新
对不起,我不清楚。

按层次结构,我的意思是一系列嵌套母版页,那么如何在一组嵌套母版页中设置最顶层的母版页呢?

例如,我们有一个设置,使不同的客户类型具有不同的母版页,并且嵌套在该母版页中的是特定用户角色的附加母版页。我们需要动态设置root客户主服务器和角色主服务器。

2 个答案:

答案 0 :(得分:3)

“层次结构中的更高层”是什么意思并不完全清楚,但如果你的意思是“在一个地方,而不是在我创建的每一个控制器中”,我可以想到两个选择:

  1. 创建一个抽象控制器超类型并从中继承您的具体控制器。

  2. Create a controller factory(子类DefaultControllerFactory),并覆盖CreateController以设置自定义MasterPage属性。

  3. 如果选择后一种解决方案,则需要在Global.asax中执行此操作:

      ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
    

答案 1 :(得分:1)

今天在MVC中没有这方面的设施。