Estoy construyendo una URL con el método:Cómo pasar Request.QueryString a Url.Action?
Url.Action("action", "controller");
me gustaría transmitir la cadena de consulta de la solicitud actual en esa url también. algo como lo siguiente (pero no funciona): trabajo
public static RouteValueDictionary ToRouteValues(this NameValueCollection queryString)
{
if (queryString.IsNull() || queryString.HasKeys() == false) return new RouteValueDictionary();
var routeValues = new RouteValueDictionary();
foreach (string key in queryString.AllKeys)
routeValues.Add(key, queryString[key]);
return routeValues;
}
Con el método de extensión hace el siguiente::
Url.Action("action", "controller", Request.QueryString);
la conversión de la cadena de consulta a routevalues es posible con la siguiente extensión
Url.Action("action", "controller", Request.QueryString.ToRouteValues());
¿Hay alguna otra manera mejor? Thx
Esto generará una excepción si una cadena de consulta contiene dos claves/valores con la misma clave, lo que siempre es una posibilidad ya que alguien puede alterar cadenas de consulta en su navegador –
¡Gracias, esta pregunta es una respuesta realmente útil! ¿Qué es 'querystring.IsNull()' though? ¿Es una extensión personalizada? Porque no lo veo en ningún lado. – hofnarwillie