Usercontrol e masterpage

lunedì 30 aprile 2007 - 12.40

PEPE Profilo | Senior Member

Salve,
ho una pagina aspx che eredita una masterpage.

Dentro un content della pagina aspx c'e' uno usercontrol.
Per referenziare quello usercontrol ed andare a leggere delle proprerty come bisogna fare?

Quando non avevo la masterpage era necessario fare questo:
Dim miaUbicazione As Controls_ubicazione = DirectCast(Page.FindControl("uUbic"), Controls_ubicazione)
lbl.text= miaUbicazione.istComune & miaUbicazione.istProvincia & miaUbicazione.istRegione

Ora questo condice non funge piu :P.

Ho provato a sostituire al page. master. ma non è cambiato nulla. Mi da sempre l'errore...riferimento non impostato su istanza di oggetto...vabbe capito...il solito nullreference :D:D:D.

Grazie 1000,
Luca.

freeteo Profilo | Guru

ciao,
cosi' di primo approccio mi vengono in mente questi vecchi thread dove si parlava di qualcosa di analogo, avere una proprieta' della masterpage visibile alle varie pagine "figlie" diciamo.
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12661
http://www.dotnethell.it/forum/messages.aspx?ThreadID=11944

Nel tuo caso potresti pensare di fare il codice nel get della proprieta' dove vai a leggere dei valori del controllo che hai tu, che nella master dovresti avere da intellisense e quindi "diretto"...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

PEPE Profilo | Senior Member

Ciao,
nell'esempio che hai postato gli usercontrol devono essere referenziati nella masterpage.

Io in realta devo referenziarli nella pagina aspx. Se questa pagina è un'aspx "normale" mi funziona. Se la pagina aspx ha una masterpage associata mi da errore.
Purtroppo non mi viene in mente nulla :(.

PEPE Profilo | Senior Member

Ciao a tutti,
sono riuscito a capire che cos'e' che non andava.

Allora in pratica prima di fare il find control nell'ogetto page è necessario referenziare il content della master page e poi da li fare il findcontrol nell'oggetto masterpage.

Ecco un esempio

Pagina aspx standard:
Dim miaAttivita As Controls_attivita = DirectCast(Page.FindControl("uAttivita"), Controls_attivita)
lblmessage.Text= miaAttivita.idAttivita
---------------------
Pagina aspx con masterpage:
Dim mPage As ContentPlaceHolder = DirectCast(Master.FindControl("ContentBody"), ContentPlaceHolder)
Dim miaAttivita As Controls_attivita = DirectCast(mPage.FindControl("uAttivita"), Controls_attivita)
lblmessage.Text= miaAttivita.idAttivita

Spero possa essere utile perche sta cavolata me ha fatto perdere 2 giorni :D.

Ciao ciao,
Luca.

kaone Profilo | Newbie

Te possino fa' na statua!

Grazie, mi hai fatto risparmiare un giorno e mezzo

kduhcm Profilo | Junior Member

Grazie e' stato utile anche a me. Vi allego la versione c# di come reperire il puntamento a un controllo della master page.

ContentPlaceHolder mPage = (ContentPlaceHolder) (Master.FindControl("CPHMenu"));
Button Bottone = (Button) (mPage.FindControl("btnUpload"));
Bottone.Enabled=true;
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5