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?

¿Fue útil?

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"?;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top