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

Lo anterior parece abrupto. ¿Existe una manera más elegante/compacta de verificar si un parámetro de cadena de consulta no es nulo y, de ser así, recuperar el valor de la misma?¿La forma más elegante de verificar el valor de un parámetro de cadena de consulta si no es nulo?

+0

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

Respuesta

10

Pensé primero en ofrecer

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

pero rápidamente se dieron cuenta de que con las cadenas, la comparación de un trozo de cuerda con nula está bien, y producirá falso, así que solo usar esto funcionará:

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

Puede utilizar String.IsNullOrEmpty

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

O

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

} 
+0

¿Qué pasa con el valor de ParamName? Solo has abordado la primera línea de mi código (efectivamente, de todos modos, realmente debería estar usando IsNullOrEmpty, entonces +1). –

1

yo personalmente iría con un simple conjunto de métodos de extensión, algo como esto:

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); 
    } 
} 

y ejemplos de uso

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

Es mejor escribir código que pueda ser completo, rápido y fácil de entender lo que se hace con la primera mirada de otros desarrolladores que pueden llegar a continuar su código. Además, si ves cuánto código es producto por las líneas que escribes, te das cuenta de que haces código lento. Un simple '==' se hace el trabajo. – Aristos

+0

Feliz de aceptar las críticas, pero ¿puede explicar cómo se considera que el código es "lento"? – Kane

+0

Como también soy crítico, recupero el código lento, lo controlo y la compilación crea lo que veo, no las conversiones adicionales que creo al principio. (Solo quiero decir que hay muchos controles adicionales, cuando solo se necesita el '==' pero es lo que vemos) – Aristos

Cuestiones relacionadas