Utilizzo delle QueryString con Asp.NET e C#
Come ho potuto sanguinosamente sperimentare sulla mia ormaiemaciata pelle, l'utilizzo e la gestione delleQueryString in Asp.NET, in particolare con C# (che adifferenza di VBScript e dello stesso JScript è unvero linguaggio di programmazione) non è immediato elineare come in Asp tradizionale, o come in Php.
Per svariati motivi può tornare utile recuperare unparametro in QueryString che sia in alcuni casi un tipostringa, ed in altri un tipo numerico. In questa sedeaffronteremo entrambi i casi. Creiamo il filequerystring.apsx.
Iniziamo a vedere come recuperare un parametro in QueryStringdi tipo stringa:
<%@Page Language="C#" Debug="true"%><script runat="server"> void Page_Load(Object sender, EventArgs e) { if (Request.QueryString["cat"] != null) {String cat = Request.QueryString["cat"];Response.Write("La categoria corrente è " + cat); } }</script>
Diversamente da come siamo abituati a fare in Asptradizionale (VBScript e JScript) in C# il valore di unvettore si recupera tra parentesi quadre
Request.QueryString["cat"]
Se il valore è diverso da null, allorarecuperiamo la QueryString memorizzandola in una variabile ditipo String e la utilizziamo dove ci serve.
Si provi a lanciare il browser all'indirizzo
http://localhost/percorso/querystring.aspx?cat=A
Nel caso di una variabile numerica, ovvero di tipoint, in C# non è possibile ottenere unaconversione implicita del tipo, dato che la collezioneRequest.QueryString, di fatto, è considerata di basedi tipo String. La conversione deve essere effettuata colmetodo ToInt32 nella forma
System.Convert.ToInt32(variabile_String);
Vediamo un esempio, col file querystring2.aspx:
<%@Page Language="C#" Debug="true"%><script runat="server"> void Page_Load(Object sender, EventArgs e) { if (Request.QueryString["id"] != null) {String id = Request.QueryString["id"];int id2 = 0;id2 = System.Convert.ToInt32(id);Response.Write("Stai visitando la pagina # " + id2); } }</script>
La parte evidenziata in rosso evidenzia il recupero dellavariabile, la sua inizializzazione e la conversione.
Si provi a lanciare il file creato per questo esempio
http://localhost/percorso/querystring2.aspx?id=1
Si provi adesso a modificare l'indirizzo in questo modo
http://localhost/percorso/querystring2.aspx?id=CIAO
Il parametro id, in seguito alla conversione, èa tutti gli effetti un intero numerico, quindi ha tutti isuoi buoni motivi per adirarsi come una biscia se valorizzatocon una stringa. E' necessario gestire l'errore... houtilizzato il costrutto try...catch:
<%@Page Language="C#" Debug="true"%><script runat="server"> void Page_Load(Object sender, EventArgs e) { if (Request.QueryString["id"] != null) {try{ String id = Request.QueryString["id"]; int id2 = 0; id2 = System.Convert.ToInt32(id); Response.Write("Stai visitando la pagina # " + id2);}catch (Exception Ex){ Response.Write("Impossibile utilizzare valori non numerici");} } }</script>