次のように、残りのすべてのルートを一致させることができます。
routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");
この場合、すべてのルートがわかっているので、それ以外のものを「missing」/404 ページに送信したいと考えています。これはワイルドカードであり、すべてをキャッチするため、 必ず最後のルートとして配置してください。
または、同じ方法でルートを登録することもできますが、次のように内部的にページへのマッピングを行います。
routes.Add(new Route("{*value}", new DefaultRouteHandler()));
そのハンドラ クラスは、次のようなワイルドカード マッピングを行います。
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;
}
}
これは、水平スクロールを防ぐために奇妙な場所で少し壊れていますが、全体的な要点はわかります。繰り返しますが、これが最後のルートであることを確認してください。そうしないと、 すべてのルートが処理されます。