2008-11-07 7 views
5

Je dois prendre en charge différentes pages maîtres sur mon application (ASP.NET MVC). Quelle est la méthode recommandée pour:Modèle maître en évolution dynamique dans ASP.NET MVC

  1. Transmettez le nom de la page maître à la vue.
  2. Stockez la page maquette (en cours de session ou quelque chose comme ça) pour qu'elle reste visible lors de la visite d'un utilisateur.

Répondre

9

Utilisez un contrôleur de base personnalisé et hérite de ce lieu:

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 

Je tournai ma variable de session dans le 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

Ceci est une excellente réponse, juste pour le mettre à jour légèrement dans MVC3, vous pouvez également créer maintenant personnalisé Razor View Engine qui peut être plus propre: http: // weblogs .asp.net/imranbaloch/archive/2011/06/27/view-engine-avec-dynamic-view-location.aspx – Liam

0

vous pourriez jeter le nom de la page maître dans la session, mais les sessions ne sont pas fiables. Je recommanderais de le jeter dans un db à la place.

Une fois que vous êtes dans la page, vous pouvez modifier/définir la page maître en accédant à page.masterpagefile. c'est une chaîne; Il suffit de passer le nom du .master.

-2

Pourquoi ne pas conserver la page principale dans le profil utilisateur? Ensuite, il suffit de le modifier sur l'événement PreLoad.

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

+0

J'utilise ASP .NET MVC. Le contrôleur ne devrait-il pas décider quelle page utiliser? – pgb

+0

Oui. Vous devriez probablement utiliser un contrôleur de base. –

+0

La question mentionne spécifiquement que c'est pour ASP.NET MVC et non ASP.NET – Suhas

Questions connexes