Asp.net mvc 使用MVC动态分配母版页

Asp.net mvc 使用MVC动态分配母版页,asp.net-mvc,Asp.net Mvc,使用webforms时,将母版页动态分配给页面的适当位置似乎是pages PreInit事件: this.Master.MasterPageFile = "~/leaf.Master" 如果是Nessary,则嵌套母版页层次结构中的母版页也可以在此处设置: this.Master.MasterPageFile = "~/leaf.Master" this.Master.Master.MasterPageFile = "~/root.Master" 使用MVC框架,您可以通过传递母版名,使用c

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

this.Master.MasterPageFile = "~/leaf.Master"
如果是Nessary,则嵌套母版页层次结构中的母版页也可以在此处设置:

this.Master.MasterPageFile = "~/leaf.Master"
this.Master.Master.MasterPageFile = "~/root.Master"
使用MVC框架,您可以通过传递母版名,使用controllers View方法动态设置单个母版页名称,但是如何设置层次结构中更高级别的其他母版页

更新
对不起,我不清楚

我所说的层次结构是指嵌套母版页链,那么如何设置嵌套母版页链中最顶层的母版页呢


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

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

  • 创建一个抽象控制器超类型,并从中为具体控制器创建子类

  • (子类DefaultControllerFactory),并重写CreateController以设置自定义母版页属性

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

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

    现在MVC中没有这方面的功能。

    控制器不直接设置母版页,因为它们从来没有直接访问视图的权限。我知道。但是仔细阅读他的问题,他解释了他想做什么。我想你没有领会我的意思。您谈论的是控制器,就像控制器曾经访问过实际视图一样。他们没有。您的解决方案实际上不起作用。Brad,我再次理解您的观点,但请完整阅读他的信息,特别是代码示例(Controller没有主属性;ViewPage有)。他希望通过ViewData将主名称传递给视图并在视图中使用,而不是直接在视图上设置属性。