Dynamically changing Master Template in ASP.NET MVC

前端 未结 3 1640
执笔经年
执笔经年 2020-12-30 16:12

I have the requirement to support different Master pages on my application (ASP.NET MVC). What is the recommended way to:

  1. Pass the master page name to the view
相关标签:
3条回答
  • 2020-12-30 16:21

    you could throw the master page name into the session, but sessions are unreliable. i'd recommend throwing it in a db instead.

    once you're in the page, you can change/set the master page by accessing page.masterpagefile. it's a string; just pass the .master name in.

    0 讨论(0)
  • 2020-12-30 16:25

    Why not keep the Master Page on the user profile? Then just change it on the PreLoad event.

    http://www.odetocode.com/articles/440.aspx

    0 讨论(0)
  • 2020-12-30 16:41

    Use a custom base controller and inherit from it instead:

    Public Class CustomBaseController
        Inherits System.Web.Mvc.Controller
    
        Protected Overrides Function View(ByVal viewName As String, ByVal masterName As String, ByVal model As Object) As System.Web.Mvc.ViewResult
    
           Return MyBase.View(viewName, Session("MasterPage"), model)
    
        End Function
    
    End Class
    

    I set my Session variable in the global.asax Session_Start:

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    
    //programming to figure out your session
    Session("MasterPage")="MyMasterPage"
    
    End Sub
    
    0 讨论(0)
提交回复
热议问题