Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Richiamare metodo classe nel codice della finestra di progettazione
mercoledì 31 dicembre 2008 - 17.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sfvaleriano
Profilo
| Newbie
7
messaggi | Data Invio:
mer 31 dic 2008 - 17:46
Salve....
forse perchè sono quasi le 18 dell' del 31 dicembre ma nn riesco ad uscirne, ecco il problema.
Ho un classe con un metodo, es:
Namespace GlobalUtility
Class MiaClasse
public function MiaFunzione() as string
return "stringa"
end function
end class
end namespace
Nella pagina prova.aspx invece avrò ad esempio un etichetta.
<asp:Label ID="Label1" runat="server" Text="<%# MiaClasse.MiaFunzione() %>"></asp:Label>
ma non funziona......
Come posso richiamare quindi il metodo della funzione nel codice della finestra di progettazione
e non nel codefile associato???
Sto uscendo passo tra i vari <%= ... %> <%# ... %> <%$ ... %> quali sono le differenze???
Auguri a tutti!
Valeriano
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
gio 1 gen 2009 - 12:45
Ciao,
per far funzionare il codice <%# %> devi richiamare il metodo databind del tuo controllo, perchè il simbolo di cancelletto indica quel codice che viene richiamato durante il databind. Se il tuo controllo fosse dentro ad esempio ad un repeater di cui hai fatto il databind funzionerebbe (il databind è valido per tutti gli oggetti contenuti), ma se sei all'interno della pagina allora devi forzare tu la chiamata.
Se invece usi <%= %> allora considera che la funzione viene richiamata durante la creazione del response della pagina però è valida quando il tuo controllo non è runat="server"
Se quindi devi semplicamente visualizzare un testo puoi scrivere:
<span><%= MiaFunzione() %></span>
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
sfvaleriano
Profilo
| Newbie
7
messaggi | Data Invio:
ven 2 gen 2009 - 10:30
bhe il problema è che io devo utilitarre con controllo che può ad esempio essere
un asp:label runtat="server"
In tal caso quindi come posso fare?
Se scrivo:
<asp:Label ID="Label1" runat="server" Text="<%= MiaFunzione() %>"></asp:Label>
nella pagina html ottengo:
....
<span id="Label1"><%= pippo() %></span>
....
qual'è il metodo corretto?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
ven 2 gen 2009 - 10:42
Allora da codice devi richiamare il databind della label:
Label1.DataBind()
e poi nell'aspx puoi inserire Text="<%# TuaFunzione() %>"
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
sfvaleriano
Profilo
| Newbie
7
messaggi | Data Invio:
ven 2 gen 2009 - 11:01
ok in questo modo funziona....
nel codefile
Protected Sub Page_Load
Label1.DataBind()
End Sub
nella pagina aspx
<asp:Label ID="Label1" runat="server" Text="<%# MiaFunzione() %>"></asp:Label>
risultato:
<span id="Label1">il mio testo</span>
Questo metodo comunque mi lascia perplesso....
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
ven 2 gen 2009 - 13:24
Perchè ti lascia perplesso?
Il discorso è molto semplice, nel momento in cui dichiari un controllo runat="server" si presume che tu lo userai da codice, e quindi per popolare la proprietà text scrivi il codice corretto nelle funzioni della pagina.
Un discorso a parte riguarda il databinding, perchè potrebbe capitare che il controllo faccia parte di un controllo su cui è stato fatto il databind, quindi per gestire questi casi è stata introdotto il simbolo # che gestisce queste logiche in controlli annidati. Nel tuo caso infatti forzando il DataBind funziona. Volendo potresti farlo sulla pagina ma rischi di modificare il comportamento di tutti gli altri controlli. Qui trovi un approfondimento sul discorso:
http://support.microsoft.com/kb/307860
In alternativa all'interno della pagina aspx si può usare <%= .. %> come si faceva con le pagine asp. Questa dicitura inserisce all'interno dell'html generato il risultato della funzione.
Di solito si usa la seconda opzione quando si vuole semplicemente inserire nella pagina il risultato di una funzione che va ad inserirsi in un punto specifico del codice html.
Nel tuo caso se ti serve dichiare una label perchè poi devi accederci da codice tanto vale allora fare anche il popolamento della proprietà text da codice, altrimenti non vedo proprio l'esigenza di avere una label, e allora puoi usare direttamente uno span html oppure anche nulla e visualizzare il risultato direttamente nella pagina.
<%= non funziona con i controlli runat server perchè essendo un controllo server non interpreta quanto contenuto nella proprietà text ma lo memorizza come semplice stringa.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Torna su
Stanze Forum
Elenco Threads
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 !