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 }