¿Cómo se utilizan las cadenas de consulta con el enrutamiento ASP.NET?
-
03-07-2019 - |
Pregunta
El nuevo enrutamiento de ASP.NET es ideal para las URL de estilo de ruta de acceso simple, pero si desea utilizar una url como:
http://example.com/items/search .xhtml? term = Text + to + find & amp; page = 2
¿Tiene que usar un parámetro catch all con una validación?
Solución
Todos los elementos de datos de la vista que no están listados en la ruta se asignan automáticamente a la cadena de consulta, por lo que si asigna " items / search.xhtml " a una acción:
Search(string term, int page)
Entonces debería obtener los resultados que está buscando.
Otros consejos
También puedes hacer coincidir los parámetros de la cadena de consulta con las rutas, si solo quieres capturar todo lo que necesitas para agregar un parámetro como este:
{* contentUrl}
Que llenará el resto de la url en esa variable.
También tuve problemas para pasar una URL codificada a una ruta como parámetro de ruta.
No puede usar caracteres codificados en URL en una URL, pero sí en una cadena de consulta.
Por lo tanto, necesitaba que mi ruta también tuviera un elemento de cadena de consulta.
Di que tengo una ruta:
MapPageRoute("myroute", "myroute/{x}", "~/routehander.aspx")
Pero lo quiero en la forma de:
http://mywebsite.com/myroute/{x}?url=myurl
Podemos hacer esto:
Dim x as integer = 12
Dim rvd As New Routing.RouteValueDictionary
rvd.Add("x", x)
rvd.Add("url", Server.UrlEncode("/default.aspx"))
HttpContext.Current.ApplicationInstance.Response.RedirectToRoutePermanent("myroute", rvd)
Esto nos redireccionaría a la siguiente url:
http://mywebsite.com/myroute/12?url=%252fdefault.aspx
Aún puedes usar Request.QueryString["some_value"?;