2012-06-29 10 views
9
if(Page.Request.QueryString["ParamName"] != null) 
    if(Page.Request.QueryString["ParamName"] == expectedResult) 
    //Do something spectacular 

Quanto sopra sembra conciliante. Esiste un modo più elegante/compatto di verificare se un parametro stringa di query non è nullo e, in tal caso, recuperarne il valore?Il modo più elegante di controllare il valore di un parametro stringa di query se non è nullo?

+0

http://stackoverflow.com/questions/ 349742/how-do-you-test-your-request-querystring-variabili –

risposta

10

ho pensato prima di offrire

if ((Page.Request.QueryString["ParamName"] ?? "") == expectedResult) { 

ma subito capito che con le stringhe, confrontando una stringa con nulla va bene, e produrrà false, quindi il solo utilizzo di questo funzionerà:

if(Page.Request.QueryString["ParamName"] == expectedResult) 
    //Do something spectacular 
7

È possibile utilizzare String.IsNullOrEmpty

String.IsNullOrEmpty(Page.Request.QueryString["ParamName"]); 

O

var parm = Page.Request.QueryString["ParamName"] ?? ""; 
if(parm == expectedResult) 
{ 

} 
+0

E il valore di ParamName? Hai solo affrontato la prima riga del mio codice (in realtà, tuttavia, dovrei davvero usare IsNullOrEmpty - quindi +1). –

1

Personalmente vorrei andare con un semplice insieme di metodi di estensione, qualcosa di simile:

public static class RequestExtensions 
{ 
    public static string QueryStringValue(this HttpRequest request, string parameter) 
    { 
     return !string.IsNullOrEmpty(request.QueryString[parameter]) ? request.QueryString[parameter] : string.Empty; 
    } 

    public static bool QueryStringValueMatchesExpected(this HttpRequest request, string parameter, string expected) 
    { 
     return !string.IsNullOrEmpty(request.QueryString[parameter]) && request.QueryString[parameter].Equals(expected, StringComparison.OrdinalIgnoreCase); 
    } 
} 

e un esempio dell'uso

string value = Page.Request.QueryStringValue("SomeParam"); 
bool match = Page.Request.QueryStringValueMatchesExpected("SomeParam", "somevaue"); 
+0

È meglio scrivere codice che possa essere completamente, veloce e facile capire cosa viene fatto con la prima occhiata da altri sviluppatori che potrebbero venire a continuare il tuo codice. Inoltre, se vedi quanto codice è prodotto dalle righe che scrivi, ti rendi conto di creare codice lento. Un semplice '==' è fatto il lavoro. – Aristos

+0

Felice di accettare le critiche, ma puoi spiegare come il codice è considerato "lento"? – Kane

+0

Perché accetto anche le critiche, riprendo il codice lento, lo controllo e la compilazione crea quello che vedo, non le conversioni extra che penso in un primo momento. (Voglio solo dire che ci sono molti controlli extra, quando ho solo bisogno di '==' ma è quello che vediamo) – Aristos

Problemi correlati