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方法应用实例相关推荐
- ASP.NET MVC教程五:ASP.NET MVC中的路由
一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在AS ...
- ASP.NET MVC 中的路由传递参数
路由传递参数 ASP.NET MVC 根据传入URL调用不同的控制器类()以及他们中不同的操作方法 //在HellowordController中的代码 using System; using Sys ...
- ASP.NET MVC中实现多个按钮提交的几种方法
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...
- ASP.NET MVC中的模型装配 封装方法 非常好用
下面说一下 我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实 ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- ASP.NET MVC学习之路由篇(2)
ASP.NET MVC学习之路由篇(2) 原文:ASP.NET MVC学习之路由篇(2) 继ASP.NET MVC学习之路由篇(1)后继续学习. 7.解决与物理路径的冲突 当发送一个请求至ASP.NE ...
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
- 如何在 ASP.NET MVC 中集成 AngularJS
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...
最新文章
- 面试 -- ListView对其指定的子Item进行单独的刷新
- 移动App开发趋势及未来的展望
- 阿里云实时计算的前世“功”今生“能”
- 使用OpenGL Shader实现放大镜效果
- 七、Mosquito 集群搭建
- 项目中遇到不善于表达的人,该如何沟通?
- VMware Converter 使用图解
- 微信小程序运行报错---invoke event
- 怎么在Windows 11中为音频输出选择扬声器
- 【PHP】网站防止QQ拦截防红跳转代码
- 财务管理属于计算机网络,浅谈如何应用计算机网络进行财务管理
- linux解压覆盖命令
- linux文件未识别,linux的内核文件vmlinuz介绍-深入理解Linux重定向的使用-网卡eth0,未识别的端口的解决方法_169IT.COM...
- “我花了 5 年时间编写自己的操作系统!”
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
- tensorflow 函数查找
- 电脑管家怎么整理桌面图标?
- Druid 在有赞的实践
- ModelSim入门教程和两个典型例子
- 如何查看网站服务器的速度,如何测试网站服务器访问速度?
热门文章
- win10怎么更改账户名称_Win10邮件功能如何查看邮件
- JavaScript高级之ECMASript 7、8 、9 、10 新特性
- JavaScript高级之构造函数和原型
- LeetCode 1826. 有缺陷的传感器(枚举)
- LeetCode 464. 我能赢吗(状态压缩+记忆化递归 / 博弈)
- LeetCode 244. 最短单词距离 II(哈希map+set二分查找)
- LeetCode 157. 用 Read4 读取 N 个字符
- c2010页面闪现_vue使用v-if v-show页面闪烁,div闪现的解决方法
- vue 高德地图 不同区域显示不同颜色_高德百度哪家强?苹果Carplay第三方分屏功能评测...
- 用递归计算一个数字每一位相加的结果。_leetcode 2 两数相加(c++)