ASP.NET MVC中的路由IRouteConstraint方法应用实例
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET MVC中的路由IRouteConstraint方法应用实例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在如下代碼的寫(xiě)法中:
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 } );
}
}
因?yàn)橄到y(tǒng)需要,方法RegisterRoutes中同時(shí)應(yīng)用了MapPageRoute和MapRoute方法,這樣寫(xiě)的后果就是所有的頁(yè)面加載時(shí)都跳轉(zhuǎn)到了WEBFORM頁(yè)面中,導(dǎo)致系統(tǒng)報(bào)錯(cuò)。
報(bào)錯(cuò)原因是兩種不同的方式之間有沖突,解決這個(gè)問(wèn)題,需要給MapPageRoute加個(gè)約束,這時(shí)就用到了IRouteConstraint接口,看如下代碼:
public class MyCustomConstraint : IRouteConstraint{public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection){return routeDirection == RouteDirection.IncomingRequest;}}然后按如下修改語(yǔ)句即可
//routes.MapPageRoute("Report", "report", "~/Content/page/report.aspx"); routes.MapPageRoute("Report", "report", "~/Content/page/report.aspx", true, null, new RouteValueDictionary { { "outgoing", new MyCustomConstraint() } });?
轉(zhuǎn)載于:https://www.cnblogs.com/yuanfg/p/9015762.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC中的路由IRouteConstraint方法应用实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不会Python开发的运维终将被淘汰?
- 下一篇: 设计模式系列 - 原型模式