09 Feb
2009

ASP.NET MVC: MasterPage zur Laufzeit ändern

 

Hier und da ist es notwendig dass man die MasterPage zur Laufzeit ändern möchte. Bei ASP.NET MVC kann man dies auf mittels eines eigenen ActionFilterAttribute machen.

public class MasterPageSwitchAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var viewResult = filterContext.Result as ViewResult;
        if (viewResult != null)
        {
            viewResult.MasterName = "NeueMasterPage";
        }
    }
}

Dieses Attribute einfach an den gewünschten Controller, oder die Action hinzufügen und schon bekommt man die gewünschte MasterPage angezeigt.

Die MasterPage wird über die üblichen ASP.NET MVC Suchpfade ermittelt und der MasterName darf keinen Suffix ".master” enthalten.

Natürlich macht ein fest einprogrammierter Name der neuen MasterPage keinen großen Sinn. Man sollte diese mit einer gewissen Logik ermitteln. Ich nehme im echten Code einen kleinen Settings-Provider.

 


Der Eintrag ist mir etwas Wert
 
Comments have been closed on this topic.