Come determinare quale Pagina Bambino viene visualizzata dalla Pagina Master?

Sto scrivendo il codice sulla pagina principale e ho bisogno di sapere quale pagina del bambino (contenuto) viene visualizzata. Come posso farlo a livello di programmazione?

Sembra una ctriggers idea per iniziare. L’idea del master è che non dovrebbe interessarsi a quale pagina è presente poiché questo è tutto il codice comune per ogni pagina.

Io uso questo:

string pageName = this.ContentPlaceHolder1.Page.GetType().FullName; 

Riesamina il nome della class in questo formato “ASP.default_aspx”, ma trovo che sia facile da analizzare per la maggior parte degli scopi.

Spero che sia d’aiuto!

È meglio consentire a ContentPage comunicare a MasterPage . Ecco perché ContentPage ha una proprietà Master e MasterPage non ha una proprietà Child . La cosa migliore in questo consiste nel definire una proprietà o un metodo nella MasterPage e utilizzarlo attraverso la proprietà Master di ContentPage .

Se si utilizza questa tecnica, è meglio specificare esplicitamente il nome della class per la MasterPage. Questo rende l’utilizzo di MasterPage in ContentPage.

Esempio:

 //Page_Load MyMaster m = (MyMaster)this.Master; m.TellMasterWhoIAm(this); 

Spero che questo ti aiuti.

Ho avuto un motivo per controllare la pagina figlio nella pagina principale.

Ho tutte le mie opzioni di menu sulla mia pagina principale e devono essere disabilitate se alcune impostazioni di sistema non sono configurate.

Se non lo sono, viene visualizzato un messaggio e i pulsanti sono disabilitati. Poiché la pagina delle impostazioni è una pagina di contenuto di questa pagina principale, non voglio che il messaggio continui a essere visualizzato su tutte le pagine delle impostazioni.

questo codice ha funzionato per me:

  //Only show the message if on the dashboard (first page after login) if (this.ContentPlaceHolder1.Page is Dashboard) { //Show modal message box mmb.Show("Warning Message"); } 

Usa il codice qui sotto.

 Page.ToString().Replace("ASP.","").Replace("_",".") 

Puoi usare:

Request.CurrentExecutionFilePath

Ecco la mia soluzione al problema (questo codice va inserito nel codice dietro la pagina principale):

 if (Page.TemplateControl.AppRelativeVirtualPath == "~/YourPageName.aspx") { // your code here } 

o un po ‘più sofisticato, ma meno leggibile:

 if (Page.TemplateControl.AppRelativeVirtualPath.Equals("~/YourPageName.aspx", StringComparison.OrdinalIgnoreCase)) { // your code here } 

Faccio qualcosa di simile a questo in un mio progetto per albind in modo dinamico i file CSS in base alla pagina caricata. Ho appena ricevuto il nome del file dalla richiesta:

 this.Request.Url.AbsolutePath 

E quindi estrarre il nome del file da lì. Non sono sicuro se questo funzionerà se si stanno facendo delle riscritture di URL.

Puoi farlo ricevendo l’ultimo segmant o la richiesta e io sarò il nome del Form

 string pageName = this.Request.Url.Segments.Last(); if (pageName.Contains("EmployeeTermination.aspx")) { } 

Puoi provare questo:

<%: this.ContentPlaceHolder1.Page.GetType().Name.Split('_')[0].ToUpper() %>

Metti quel codice all’interno dei tag title di Site.Master

 Request.CurrentExecutionFilePath; 

o

 Request.AppRelativeCurrentExecutionFilePath; 
 string s = Page.ToString().Replace("ASP.directory_name_","").Replace("_aspx",".aspx").Replace("_","-"); if (s == "default.aspx") { /* do something */ } 

tante risposte che sto usando

 <%if(this.MainContent.Page.Title != "mypagetitle") { %> <%}%> 

questo semplifica l’esclusione di ogni singola pagina e, dal momento che confronti una stringa, potresti anche anteporre pagine come exclude_pagetitle e confrontare una sottostringa del titolo. Lo uso comunemente per escludere le pagine di accesso da determinate funzionalità che non desidero caricare come i timeout delle sessioni e le chat dal vivo.

Sotto il codice ha funzionato come un incantatore

string PName = Request.UrlReferrer.Segments [Request.UrlReferrer.Segments.Length – 1];

Page.Request.Url.PathAndQuery o una delle altre proprietà dell’object URI Url dovrebbero essere disponibili dal codice della pagina principale.

Puoi controllare il tipo di pagina nel code-behind:

 // Assuming MyPage1, MyPage2, and MyPage3 are the class names in your aspx.cs files: if (this.Page is MyPage1) { // do MyPage1 specific stuff } else if (this.Page is MyPage2) { // do MyPage2 specific stuff } else if (this.Page is MyPage3) { // do MyPage3 specific stuff }