代碼實例如下:
namespace Test { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //原有代碼 routes.Add(new Route("testroute-{para1}.cshtml", new AjaxGetRouteHandler())); //配置當前路由規則下的 IRouteHandler處理類 routes.MapRoute(name: "testroute", url: "testroute-{para1}.cshtml"); //自己配置的全新路由規則,當然此處尚未進行默認值配置。 routes.MapRoute( //MVC原有的默認路由配置規則 注意:這里必須將默認的路由規則在所有路由注冊的最后一個進行注冊,否則會出現新規則不能解析到正確地址的問題 name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } public class AjaxGetRouteHandler : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) {
//在當前類中可以對用於處理請求的controller,action等個各個參數進行賦值操作,可以在公開的地址欄對URL進行DES加密,這里進行解密從而得到真正的請求地址。 requestContext.RouteData.Values["controller"] = "home"; requestContext.RouteData.Values["action"] = "index";//requestContext.RouteData.Values["para1"].ToString().ToLower(); return new MvcHandler(requestContext); } } } }