• 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() } });
  • 相关阅读:
    架构、框架、模式和平台的区别
    Android逆向基础知识Smali
    Android-apktool反汇编异常-Input file (XXX) was not found or was not readable.
    Smali相关的基础知识点
    Android-apktool-就从此处开始反编译之旅
    程序员在开发各阶段专属表情包汇总
    如何完全掌握一门语言
    别转管理,十年程序员老鸟给新手的几条忠告(转)
    程序员增加收入的几种方法
    程序员成长历程的四个阶段
  • 原文地址:https://www.cnblogs.com/yuanfg/p/9015762.html
Copyright © 2020-2023  润新知