Ho alcune pagine sul mio sito Web asp.net che vorrei disattivare un controllo sulla pagina principale. C'è un modo per comunicare con la pagina master da una pagina figlio?Come controllare elementi da una pagina principale di asp.net dalla pagina figlio
risposta
Il modo più semplice è impostare una proprietà sulla pagina principale che gestisca il funzionamento on/off quando chiamato. Quindi nella tua pagina figlio imposta MasterType directive per ottenere un riferimento fortemente tipizzato alla tua pagina mastro per evitare la necessità di eseguire il cast.
tua pagina figlio avrebbe avuto:
<%@ MasterType VirtualPath="~/Site1.Master" %>
E di contattare la struttura della pagina master:
Master.MyLabel = false; // or true
Così il tuo padrone si potrebbe avere:
public bool MyLabel
{
get
{
return masterLabel.Enabled;
}
set
{
masterLabel.Enabled = value;
}
}
Ecco un esempio di come comunicare con Pagine master da Pagine figlio.
Nella pagina master, creare una proprietà per il controllo che si desidera accedere, ad esempio un'etichetta chiamata lblUser ...
public string MyProperty
{
set { lblUser.Text = value; }
}
Nella pagina figlio, accedere alla proprietà appena creato come nel seguente esempio ...
((MyMaster)this.Master).MyProperty = "Text changed from Sub Page";
siamo in grado di fare questo perché il Maestro è semplicemente una classe che eredita System.Web.UI.MasterPage.
E la proprietà Label.Text che abbiamo creato è solo una proprietà della classe Master (questo nome sarà il nome specifico della pagina master corrente, in questo caso MyMaster).
Si noti che non funzionerà senza un cast per la specifica classe Master Page e questo è perché è stato aggiunto un campo che non esiste in System.Web.UI.MasterPage, il tipo di questo.Master, ma nel vostro Master Class specifica.
+1 a questo! Come la mia soluzione, solo più elegante! – GenericTypeTea
Semplice e utile. Grazie e meritato un punto. – QMaster
this.Master.FindControl("controlid").dosomethinghere
-1 codifica nomi dei controlli rigidi come stringhe è male – GenericTypeTea
@GenericTypeTea Questo è quello che fanno nel [documentazione] (https://msdn.microsoft.com/en-us/library/xxwa0ff0 (v = vs.140) aspx) anche se – Zorgarath
è necessario utilizzare una direttiva MasterType nella tua pagina markup
<%@ MasterType TypeName="Namespace.Etc.MyMasterPage" %>
Allora si sarà in grado di accedere a tutte le proprietà pubbliche della pagina master della pagina utilizzando
this.Master.PropertyIWantToIntefereWith...
Spero che questo aiuta
L'ho fatto attraverso la fusione dell'oggetto Page ... questo suona SOOO molto meglio! Grazie! – CodeRedick
Non è stato chiaro per me dove determinare il valore TypeName, quindi ho utilizzato l'opzione VirtualPath per MasterType e ha funzionato perfettamente. Grazie! – Lloyd
Mai più questo! Grazie Marco +1! – GenericTypeTea
I cercavo qualcosa di simile, ma questa soluzione non sembra funzionare per me. Ho una pagina principale annidata. Funziona per un maestro annidato? Quando ho implementato, non riconosce il controllo che ho aggiunto al mio master.
- 1. ASP.NET MVC: diversi modelli per pagina principale e vista pagina
- 2. Problemi di pagina principale e file ASP.Net
- 3. Come chiamare la funzione javascript della pagina figlio dalla pagina master javascript
- 4. Accesso alle proprietà della pagina principale da pagine figlio in ASP.net VB
- 5. Come impostare il titolo della pagina da una pagina di contenuto Web in ASP.NET 3.5
- 6. Pulsante predefinito in asp.net (Pagina principale)?
- 7. ResolveUrl senza una pagina ASP.NET
- 8. Metodo di accesso alla pagina principale in asp.net C#
- 9. Come accedere agli oggetti javascript di iframe dalla pagina principale?
- 10. Restituzione dell'oggetto JSON da una pagina ASP.NET
- 11. Equivalente PHP della pagina principale in ASP.NET
- 12. ASP.NET MVC Pagina principale Ambito variabile
- 13. Ottenere uno screenshot da una pagina ASP.Net
- 14. jQuery post dalla pagina Web ASP.NET (WebMatrix)
- 15. asp.net parametro mvc dalla pagina a una vista parziale
- 16. Come tornare da iframe alla pagina principale di lavorare su principali elementi della pagina - utilizzando il selenio WebDriver
- 17. Come accedere a un Resource.resx dalla pagina ASP.NET?
- 18. Pagina di configurazione ASP.NET
- 19. Come la pagina JSP deve controllare l'autenticazione
- 20. asp.net mvc2 - controller per pagina principale e organizzazione codice
- 21. Come ottengo l'account Windows attualmente connesso da una pagina ASP.NET?
- 22. ASP.Net (C#) come inviare a HTTPS da una pagina HTTP
- 23. Utilizzo di Watir-webdriver come controllare l'URL di una pagina
- 24. Ottieni l'ID dell'oggetto Pagina principale nella pagina di contenuto
- 25. Accesso "Pagina Modifica URL scheda" dalla pagina
- 26. Reindirizzare da una pagina 404 a una nuova pagina utilizzando ASP.Net
- 27. Posso modificare il testo di un'etichetta in una pagina principale quando carico una pagina di contenuto?
- 28. PreRender nella pagina principale ASP.NET che non funziona
- 29. Django come impostare la pagina principale
- 30. Come verificare che la pagina sia reindirizzata dalla pagina precedente o non in asp.net
Marks anser mi ha fatto andare su di esso, ma questa è la risposta è come sono stato in grado di implementarlo. Grazie Ahmad. – Lloyd
Bello. Una cosa che puoi fare è andare nel tuo file .designer.cs e cambiare l'ambito del controllo in pubblico, quindi hai tutte le proprietà per consegnare la tua logica di pagina. Anche se stai esponendo una proprietà pubblica, di solito è meglio usare CamelCase, pascalCase è per campi privati. :) –
@ Marco: buone informazioni! Sono d'accordo sul CamelCase, mi sono perso. Risolto ora. –