2008-11-07 16 views
5

我有要求在我的應用程序(ASP.NET MVC)上支持不同的母版頁。 什麼是推薦的方法:動態更改ASP.NET MVC中的主模板

  1. 將主頁面名稱傳遞給視圖。
  2. 存儲主頁面(在會話中,或某事),以便它在用戶訪問期間保持。

回答

9

使用定製的基本控制器和從它繼承來代替:

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 

設置我的Session變量在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

您可以將主頁面名稱放入會話中,但會話不可靠。我建議把它扔在一個分貝。

一旦你在頁面中,你可以通過訪問page.masterpagefile來改變/設置母版頁。這是一個字符串;只需傳入.master名稱即可。

-2

爲什麼不將主頁保留在用戶配置文件中? 然後在PreLoad事件中改變它。

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

+0

我使用ASP .NET MVC。控制器不應該決定使用哪個頁面? – pgb 2008-11-07 15:22:56

+0

是的。可能你應該使用一個基礎控制器。 – 2008-11-11 18:47:25