Utilizzo delle QueryString con Asp.NET e C Sharp

Siti dinamici con ASP.NET
Impara a creare siti ed applicazioni Web con Microsoft .NET

Scritto da Luca Ruggiero nella sezione Asp.NET

Come ho potuto sanguinosamente sperimentare sulla mia ormai emaciata pelle, l'utilizzo e la gestione delle QueryString in Asp.NET, in particolare con C# (che a differenza di VBScript e dello stesso JScript è un vero linguaggio di programmazione) non è immediato e lineare come in Asp tradizionale, o come in Php.

Per svariati motivi può tornare utile recuperare un parametro in QueryString che sia in alcuni casi un tipo stringa, ed in altri un tipo numerico. In questa sede affronteremo entrambi i casi. Creiamo il file querystring.apsx.

Iniziamo a vedere come recuperare un parametro in QueryString di 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 Asp tradizionale (VBScript e JScript) in C# il valore di un vettore si recupera tra parentesi quadre
Request.QueryString["cat"]
Se il valore è diverso da null, allora recuperiamo la QueryString memorizzandola in una variabile di tipo 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 tipo int, in C# non è possibile ottenere una conversione implicita del tipo, dato che la collezione Request.QueryString, di fatto, è considerata di base di tipo String. La conversione deve essere effettuata col metodo 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 della variabile, 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 i suoi buoni motivi per adirarsi come una biscia se valorizzato con una stringa. E' necessario gestire l'errore... ho utilizzato 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>

I più cliccati della sezione Asp.NET

:: Guida base ad Asp.NET (57.058)

:: I Validation Controls di Asp.NET (29.275)

:: Visualizzare i record di un database Access con Asp.NET (21.153)

:: Un Guestbook in ASP.NET, Access e ADO (18.688)

:: Inviare email con Asp.NET: il Namespace System.Web.Mail (18.031)

:: Gestione delle News in ASP.NET (13.396)

:: Una Newsletter in ASP.NET (12.036)

:: Inserire dati in un database Access con Asp.NET (11.740)

:: Upload di file in Asp.NET e Javascript (11.438)

:: Risolvere un indirizzo IP ed individuare nome macchina e dominio in Asp.NET (10.036)

IN EVIDENZA
DOWNLOAD