Benutzer mit den meisten Antworten
Theme über Masterpage ändern

Frage
-
Hallo,
ich versuche gerade mich in die Welt der Designs einzuarbeiten und ein Theme zur Laufzeit zu wechseln.
Dazu nehme ich als Unterstützung das Buch 'ASP.NET 4.0 mit VB 2010'.Unter anderem ist dort folgende Funktion vorgegeben:
Protected Sub Page_PreInit(ByVal sender as Object, ByVal e As System.Eventargs)
If Not IsNothing(Request.Cookies("layout")) then Me.Theme = Request.Cookies("layout").Value End If End Sub
Nun hat die Funktion aber keinen Handler und die Masterpage kein PreInit-Ereignis und keine Theme-Eigenschaft.
Funktioniert das dann überhaupt, oder muss ich das immer irgendwie über die Sub-Pages realisieren, was ich allerdings nicht so richtig glauben möchte.
Vielleicht hat jemand einen Lösungsansatz?
Vielen Dank.
Volker
Antworten
-
Hi Volker,
entschuldige bitte. Da war ich mit meinen Gedanken nicht bei der Sache. Im Contructor der MasterPage gib es natürlich noch keine Page, weshalb da ein Fehler kommt. Es bleibt damit nur das Aufrufen aus der WebForm-Instanz. Das kann man vereinfachen, indem vererbt wird und damit nur in einer Basisklasse die Zuweisung implementiert.Alternativ ist auch die Implementierung in einer Klasse mit IHttpModule möglich, die sich an der RquestHandler hängt.
--
Peter- Als Antwort markiert Volker S Montag, 30. Mai 2016 09:08
Alle Antworten
-
Hallo Peter,
danke für deine Hilfe.Hier kommt leider der Fehler:
In System.InvalidOperationException ist eine Ausnahme vom Typ "System.Web.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet. Zusätzliche Informationen: Die Theme-Eigenschaft kann nur bei oder vor dem Page_PreInit-Ereignis festgelegt werden.
So wie es aussieht, muss also ein PreInit-Eriegnis vorhanden sein.
Viele Grüße, Volker
- Bearbeitet Volker S Donnerstag, 26. Juni 2014 08:31
-
Hi Volker,
dann die nächste Idee:Public Class Site1 Inherits System.Web.UI.MasterPage Public Sub New() AddHandler Me.Page.PreInit, AddressOf PagePreinit End Sub Private Sub PagePreinit(sender As Object, e As EventArgs) If Not IsNothing(Request.Cookies("layout")) Then CType(sender, Page).Theme = Request.Cookies("layout").Value End If End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub End Class
--
Peter
-
Hallo Peter,
auch hier ein Fehler in der Sub New:In System.NullReferenceException ist eine Ausnahme vom Typ "App_Web_5i5humaz.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet. Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Normalerweise müsste doch, die Preinit-Methode bei den Page-Ereignissen auszuwählen sein, wenn ich den Handler mit New deklariere?
Doch da ist nichts. Oder lieg ich da falsch?Viele Grüße, Volker
-
Hi Volker,
entschuldige bitte. Da war ich mit meinen Gedanken nicht bei der Sache. Im Contructor der MasterPage gib es natürlich noch keine Page, weshalb da ein Fehler kommt. Es bleibt damit nur das Aufrufen aus der WebForm-Instanz. Das kann man vereinfachen, indem vererbt wird und damit nur in einer Basisklasse die Zuweisung implementiert.Alternativ ist auch die Implementierung in einer Klasse mit IHttpModule möglich, die sich an der RquestHandler hängt.
--
Peter- Als Antwort markiert Volker S Montag, 30. Mai 2016 09:08
-
Hallo Volker,
Wenn Dir die Antwort von Peter geholfen hat, dann bitte markiere diese als Antwort.
Danke und Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.