分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

ASP.NET MVC中的路由IRouteConstraint方法应用实例

发布时间:2023-09-06 01:53责任编辑:白小东关键词:.NETMVC

在如下代码的写法中:

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() } });

ASP.NET MVC中的路由IRouteConstraint方法应用实例

原文地址:https://www.cnblogs.com/yuanfg/p/9015762.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved