Ich habe eine ganze Reihe von Posts / Artikeln darüber gelesen, wie das geht, und ich bekomme immer noch nicht den Seitentitel von der Inhaltsseite. Meine Seiten werden gerendert, außer dass ich den Titelsatz nicht von der Inhaltsseite abrufen kann (alle Seiten haben Titel wie auf der Gestaltungsvorlage festgelegt). Hier ist der Codebehind für meine Masterseite:
%Vor%Hier ist der Rest der Masterseite:
%Vor%Es ist jedoch auf der Web-Inhaltsseite, dass ich den Wert der für die Seite festlegen möchte und ich habe dies auf meiner Testinhaltsseite platziert:
%Vor%Seltsamerweise kann ich den Debugger nicht in der Zeile oben auf der Inhaltsseite stoppen - nur in der entsprechenden Zeile auf der Masterseite. Ich bin eindeutig verwirrt.
Ich habe gelesen, dass es andere Möglichkeiten gibt, dies zu tun, aber das scheint möglich zu sein, was ich in Scott Mitchells Tutorial gelesen habe: Dynamische Einstellung des Seitentitels in ASP.NET . Konkret habe ich versucht, dem aus dem Artikel zu folgen: "Wenn Sie Masterseiten verwenden, kann dieser Code auch wie geschrieben von der Masterseite oder der ASP.NET-Seite funktionieren, die die Masterseite verwendet. In einem solchen Szenario sollte die Region in der Master-Seite, aber die ASP.NET-Seite kann weiterhin über Page.Header darauf zugreifen. "
Was also passieren muss, ist dies
MasterPage.Master
%Vor%Default.aspx
%Vor%Auf diese Weise wird der Titel Ihrer Masterseite vor dem Titel Ihrer Content-Seite festgelegt. Wenn Sie auf der Inhaltsseite keinen Titel festlegen, ist die Masterseite der Standardtitel. Wenn Sie einen Titel auf der Inhaltsseite festlegen, wird er überschrieben.
Das Problem besteht darin, dass die Page_Load-Methode auf der Seite vor der Page_Load-Methode in den Benutzersteuerelementen auf der Seite ausgeführt wird und eine Masterseite tatsächlich ein Benutzersteuerelement ist.
Sie können stattdessen die Page_Init-Methode auf der Masterseite verwenden.
Sie müssen daran denken, dass die MasterPage ein untergeordnetes Steuerelement der Seite ist, sodass das Ereignis OnLoad
nach das OnLoad
-Ereignis der Seite auslöst.
In Ihrem Szenario / Beispiel würde die Seite den Titel festlegen, dann würde die Masterseite ihn danach erneut festlegen. Entweder Sie setzen es später im Lebenszyklus oder wickeln Sie etwas mehr Logik herum, wer es vielleicht setzt?
Scott Allen hat einen guten Artikel dazu speziell für Master Page's, lest es kurz, um ein Gefühl für die Lifecycle-Reihenfolge zu bekommen .
Eine andere Lösung, die ich manchmal benutzt, ist, einen contentplaceholder zwischen die title-Tags auf der Masterseite zu setzen, dann könnten Sie ein label control in content tag verwenden und es dazu rendern.
Auf diese Weise können Sie der Seite einen Titel geben, nachdem die Steuerelemente beispielsweise zurückgesandt wurden.
Um Seite Titel mit Ihrer Standard-MasterPage Titel zu kombinieren, können Sie die Standardvorlage verwenden, die von der Standardvorlage für ASP.NET-Webanwendungen verwendet wird.
%Vor%diese Art und Weise diese Seite.Titel wird von einzelnen Seiten gelesen
%Vor%Tags und Links asp.net webforms master-pages title