puede hacer coincidir todas las rutas restantes como este:
routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");
En este caso, se conocen todas las rutas, y quieren enviar algo más que una "falta" Página/404. Solo asegúrese de poner esto como la última ruta, ya que es un comodín y atrapará todo.
alternativa usted puede registrar una ruta de la misma manera, pero internamente hace mapeo a una página, así:
routes.Add(new Route("{*value}", new DefaultRouteHandler()));
Esa clase de controlador haría su asignación de comodín, algo como esto:
public class DefaultRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//Url mapping however you want here:
var pageUrl = requestContext.RouteData.Route.Url + ".aspx";
var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page))
as IHttpHandler;
if (page != null)
{
//Set the <form>'s postback url to the route
var webForm = page as Page;
if (webForm != null)
webForm.Load += delegate { webForm.Form.Action =
requestContext.HttpContext.Request.RawUrl; };
}
return page;
}
}
Esto se rompe un poco en lugares impares para evitar el desplazamiento horizontal, pero se obtiene el punto general. Una vez más, asegúrese de que esta sea la última ruta, de lo contrario, manejará todas sus rutas.
¿Es posible entonces hacer algo como: Perspectiva Dim As String = Page.RouteData.Values ("* value") Sé que es cuando no es un comodín, pero ¿qué pasa con un comodín? – davemackey
Recibo el siguiente error. ¿Qué me estoy perdiendo? (.Net 4.5) System.Web.Routing.RouteBase 'no contiene una definición para' Url 'y no se pudo encontrar ningún método de extensión' Url 'que aceptara un primer argumento de tipo' System.Web.Routing.RouteBase '(son ¿falta una directiva de uso o una referencia de ensamblado?) – HGMamaci