代碼實例以下:html
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); } } } }