Festlegen des Seitentitels über eine Webinhaltsseite in ASP.NET 3.5

7

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. "

    
John Adams 19.02.2010, 00:38
quelle

7 Antworten

10

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.

    
Chase Florell 19.02.2010, 00:58
quelle
6

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.

    
Guffa 19.02.2010 00:43
quelle
3

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 .

    
Nick Craver 19.02.2010 00:42
quelle
2

Ich hatte dieses Problem auch. Ich kann die Master-Datei nicht bearbeiten (zu viele mögliche Nebenwirkungen), also habe ich die PreRender () -Methode der Seite verwendet, die nach den Masterseiten PageLoad ()

auslöst %Vor%     
nedlud 04.02.2014 00:34
quelle
2

einfachere Lösung in der Masterseite & lt;%: Page.Title% & gt; - Der Haupttitel geht hier

in der Inhaltsseite erste Zeile davon & lt;% @ Page Title="Ihr Titel" Language="C #" MasterPageFile="~ / _masterpages / ... etc

    
wael 21.09.2015 02:02
quelle
0

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.

    
benpage 19.02.2010 01:03
quelle
0

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%     
Iman Abidi 31.12.2016 12:36
quelle