ASP.NET MVC中的路由IRouteConstraint方法应用实例
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET MVC中的路由IRouteConstraint方法应用实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在如下代碼的寫法中:
public class RouteConfig{public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapPageRoute("Report", "report", "~/Content/page/report.aspx") routes.MapRoute( name: "BaseManage", url: "Admin/BaseManage/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );routes.MapRoute( name: "Order", url: "Admin/OrderManage/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
routes.MapRoute( name: "Admin", url: "Admin/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
}
}
因為系統需要,方法RegisterRoutes中同時應用了MapPageRoute和MapRoute方法,這樣寫的后果就是所有的頁面加載時都跳轉到了WEBFORM頁面中,導致系統報錯。
報錯原因是兩種不同的方式之間有沖突,解決這個問題,需要給MapPageRoute加個約束,這時就用到了IRouteConstraint接口,看如下代碼:
public class MyCustomConstraint : IRouteConstraint{public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection){return routeDirection == RouteDirection.IncomingRequest;}}然后按如下修改語句即可
//routes.MapPageRoute("Report", "report", "~/Content/page/report.aspx"); routes.MapPageRoute("Report", "report", "~/Content/page/report.aspx", true, null, new RouteValueDictionary { { "outgoing", new MyCustomConstraint() } });?
轉載于:https://www.cnblogs.com/yuanfg/p/9015762.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC中的路由IRouteConstraint方法应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不会Python开发的运维终将被淘汰?
- 下一篇: [并查集][排序][dfs][启发式合并