Javascript e ASP.NET

2 pagine in totale: <<Indietro 1 [2]

RegisterArrayDeclaration e RegisterHiddenField

E' la volta di analizzare altre due istruzioni:

RegisterArrayDeclaration
e
RegisterHiddenField
.
La 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

2 pagine in totale: <<Indietro 1 [2]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC