Vous pouvez faire correspondre tous les itinéraires restants comme celui-ci:
routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");
Dans ce cas, nous savons que tous les itinéraires, et veulent envoyer quoi que ce soit d'autre à un « manque »/404 page. Assurez-vous simplement de mettre cela comme dernière route, car il s'agit d'un joker et va tout attraper.
Sinon, vous pouvez enregistrer un itinéraire de la même manière, mais ne interne cartographie à une page, comme ceci:
routes.Add(new Route("{*value}", new DefaultRouteHandler()));
Cette classe de gestionnaire ferait le mappage générique, quelque chose comme ceci:
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;
}
}
Ceci est cassé un peu dans les endroits impairs pour empêcher le défilement horizontal, mais vous obtenez le point global. Encore une fois, assurez-vous que c'est le dernier route, sinon il va gérer tous vos itinéraires.
Est-il possible de faire quelque chose comme: Dim perspective As String = Page.RouteData.Values ("* value") Je sais que c'est quand ce n'est pas un joker, mais qu'en est-il un caractère générique? – davemackey
Je reçois une erreur de suivi. Qu'est-ce que je rate? (.Net 4.5) System.Web.Routing.RouteBase 'ne contient pas de définition pour' Url 'et aucune méthode d'extension' Url 'acceptant un premier argument de type' System.Web.Routing.RouteBase 'n'a été trouvée (sont manque-t-il une directive using ou une référence d'assembly?) – HGMamaci