Si usted ha estado buscando una manera agradable y limpio para analizar los valores de cadena de consulta, me han llegado con esto:C# ASP.NET cadena de consulta analizador
/// <summary>
/// Parses the query string and returns a valid value.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">The query string key.</param>
/// <param name="value">The value.</param>
protected internal T ParseQueryStringValue<T>(string key, string value)
{
if (!string.IsNullOrEmpty(value))
{
//TODO: Map other common QueryString parameters type ...
if (typeof(T) == typeof(string))
{
return (T)Convert.ChangeType(value, typeof(T));
}
if (typeof(T) == typeof(int))
{
int tempValue;
if (!int.TryParse(value, out tempValue))
{
throw new ApplicationException(string.Format("Invalid QueryString parameter {0}. The value " +
"'{1}' is not a valid {2} type.", key, value, "int"));
}
return (T)Convert.ChangeType(tempValue, typeof(T));
}
if (typeof(T) == typeof(DateTime))
{
DateTime tempValue;
if (!DateTime.TryParse(value, out tempValue))
{
throw new ApplicationException(string.Format("Invalid QueryString parameter {0}. The value " +
"'{1}' is not a valid {2} type.", key, value, "DateTime"));
}
return (T)Convert.ChangeType(tempValue, typeof(T));
}
}
return default(T);
}
Siempre he querido tener algo por el estilo y finalmente lo hizo bien ... al menos eso creo ...
El código debe explicarse por sí misma ...
Cualquier comentario o sugerencia para que sea mejor son apreciadas.
Tal vez lo maneje antes de la pila de códigos, pero recuerde que una clave puede tener varios valores en una cadena de consulta, es decir, x = 1,2,3 – jro
@jro. Considero que el caso de valores múltiples no es válido porque hasta la cadena de consulta se refiere a su único valor, una cadena de "1,2,3", analizándolo como cualquier Lo demás no sería correcto. – rtpHarry