2 pagine in totale: <<Indietro 1 [2]
RegisterArrayDeclaration e RegisterHiddenField
E' la volta di analizzare altre due istruzioni:
RegisterArrayDeclarationRegisterHiddenFieldLa prima aggiunge un array codice all'interno della nostra pagina HTML:
Page.RegisterArrayDeclaration("arr"," '1','2','3' ");Ecco il codice prodotto, inserito immediatamente dopo il tag di apertura del form:
<script language="javascript">
<!--
var arr = new Array('1','2','3');
// -->
</script>
L'array potrà essere utilizzato nelle nostre funzioni Javascript. Questa funzione è più utile di quanto sembri: si pensi alla possibilità di inserire il contenuto di un'interrogazione ad un database e di poter accedere ai record con il nostro codice Javascript, in maniera del tutto automatica!
L'altra funzione, invece, inserita nella pagina in questo modo:
Page.RegisterHiddenField("nome","Andrea"); creerà questo codice per il client, sempre immediatamente dopo il tag di apertura del form:
<input type="hidden" name="nome" value="Andrea" /> In parole povere serve per aggiungere un campo nascosto in maniera programmatica.
IsStartupScriptRegistered e IsClientScriptBlockRegistered
Queste due proprietà della classe Page sono utilissime per sapere se il codice Javascript creato dalle funzioni esposte in precedenza è già presente nella pagina, per evitare errori.
Come si è visto, le funzioni server-side per l'inserimento delle nostre funzioni client-side sono eseguite nell'evento Load della pagina.
Ciò vuol dire che ad ogni postback verrà inserito ed elaborato nuovamente il codice per l'inserimento del codice javascript che è già presente nella nostra pagina.
Per risparmiare risorse e velocizzare il tutto, in caso di script di grosse dimensioni, possiamo controllarne la presenza e operare di conseguenza:
if (!Page.IsStartupScriptRegistered("codice1"))
Page.RegisterClientScriptBlock("codice1","<script>function messaggio(){alert('codice1');}</"+"script>");
if (!Page.IsClientScriptBlockRegistered("codice2"))
Page.RegisterStartupScript("codice2","<script>alert('codice2');</"+"script>");Mettiamo insieme il tutto
Ora possiamo inserire dinamicamente codice, funzioni, array e campi hidden nelle nostre pagine ASP.NET, senza più arrivare al fastidioso spaghetti-code.
Vediamone un esempio completo:
<%@ Page Language="c#" %>
<script runat="server">
void Page_Load(Object o, EventArgs e) {
if (!Page.IsStartupScriptRegistered("codice1")) {
Page.RegisterClientScriptBlock("codice1","<script>function messaggio(){ alert('Hai cliccato sul link, in arr[1] è presente il valore '+arr[1]);}</"+"script>");
}
if (!Page.IsClientScriptBlockRegistered("codice2")) {
Page.RegisterStartupScript("codice2","<script>alert('Benvenuto');</"+"script>");
Page.RegisterArrayDeclaration("arr","'1','2','3'");
Page.RegisterHiddenField("nome","Andrea");
}
}
</script>
<html><body>
<form runat="server">
<a href="javascript:messaggio()">Contenuto arr[1]</a>
<asp:button id="pulsante" Text="Call-back" runat="server" />
</form>
</body></html>
Il codice prodotto sarà questo:
<html><body>
<form name="_ctl0" method="post" action="js.aspx" id="_ctl0">
<input type="hidden" name="nome" value="Andrea" />
<input type="hidden" name="__VIEWSTATE" value="dDwtNTMwNzcxMzI0Ozs+Dq5Q6XpczJPH/YXWZvs8D2l5v3s=" />
<script>function messaggio(){ alert('Hai cliccato sul link, in arr[1] è presente il valore '+arr[1]);}</script>
<a href="javascript:messaggio()">Contenuto arr[1]</a>
<input type="submit" name="pulsante" value="Call-back" id="pulsante" />
<script language="javascript">
<!--
var arr = new Array('1','2','3');
// -->
</script>
<script>alert('Benvenuto');</script>
</form>
</body></html>All'avvio della pagina un alert ci darà il benvenuto. Cliccando sul link verrà attivata la funzione messaggio che visualizzerà un altro alert con il contenuto dell'array.
Conclusioni
Spero che con questo di aver fatto un po' di chiarezza sull'utilizzo del Javascript dinamico nelle nostre pagine ASP.NET.
Per completezza e per sapere come aggiungere codice Javascript e attributi alle nostre pagine HTML e ai tag presenti, vi rimando alla lettura degli script suggeriti negli approfondimenti
Approfondimenti
- #347 - Aggiungere un alert di conferma ad un controllo ASP.NET
- #374 - Aggiungere un alert di conferma ad un pulsante di un Datagrid ASP.NET
- #389 -Aggiungere e modificare proprietà ed eventi nei tag HTML con ASP.NET
2 pagine in totale: <<Indietro 1 [2]
Contenuti dell'articolo
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà

Stampa
Download 


