asp.net-mvc – 验证URL是否映射到ASP.Net MVC中的实际路由
发布时间:2020-12-16 09:58:45 所属栏目:asp.Net 来源:网络整理
导读:为了支持我的应用程序中的遗留URL,我使用正则表达式将/ Repo / {ixRepo} / {sSlug} / {sAction}形式的URL转换为新形式/ Repo / {sName} / {sAction},使用ixRepo获取正确的sName.这很好用,我可以使用RedirectResult将用户重定向到新的URL. 但是,我想在重定向
为了支持我的应用程序中的遗留URL,我使用正则表达式将/ Repo / {ixRepo} / {sSlug} / {sAction}形式的URL转换为新形式/ Repo / {sName} / {sAction},使用ixRepo获取正确的sName.这很好用,我可以使用RedirectResult将用户重定向到新的URL.
但是,我想在重定向用户之前捕获带有无效操作的旧URL.如何验证URL字符串是否映射到已注册的路由? MVC明确地在内部将请求映射到正确的操作,但我想手动完成. 到目前为止,我已经想出了这个: var rd = Url.RouteCollection.GetRouteData(new HttpContextWrapper(new HttpContext( new HttpRequest("",newPath,""),new HttpResponse(null)))); 似乎总是返回System.Web.Routing.RouteData,即使对于错误的路由也是如此.我找不到一种方法来检查路由是否被接受为全部捕获,或者是否实际映射到在控制器上注册的路由. 如何使用MVC的路由系统检查URL是否通过注册路由映射到有效的控制器/操作? (我见过ASP.NET MVC – Verify the Existence of a Route,但这真的很不优雅.MVC内置了一个路由系统,我想用它.) 解决方法
错误的问题.任何东西都可以是一条路线,无论它是否实际映射到一个动作.
我想你会问,“这会执行,还是404?”那是一个不同的问题. 为此,你需要做MVC所做的事情.查看MVC源代码,查看MvcHandler.ProcessRequestInit,然后查看ControllerActionInvoker.InvokeAction,了解MVC如何分别查找控制器和操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – MiniProfiler与EF“模型第一”edmx模型
- asp.net – 元素’ToolkitScriptManager’不是已知元素
- 在ASP.NET MVC4中自定义错误消息MVC的无效DateTime
- asp.net通过Ajax UpdatePanel回传后滚动条位置变更解决方法
- asp.net-mvc – 从控制器内部获取部分视图的HTML
- 在asp.net中的web.config的位置元素中有多个路径
- asp.net-web-api – 如何在Azure Service Fabric中的自托管
- asp.net – asp图表错误
- asp.net-mvc – 如何从HttpContext访问ViewData? (ASP.Net
- asp.net-core – 如何注入对特定IHostedService实现的引用?
推荐文章
站长推荐
- ASP.NET MVC C#在类中获取控制器和操作名称
- asp.net – Visual Studio 2010图表控件:使Y轴成
- asp.net-mvc – asp.net mvc 4 – 谁调用_ViewSt
- asp.net-mvc-3 – 用于ASP.NET MVC的Razor View
- asp.net-mvc – 在asp.NET MVC 3中响应HEAD请求
- asp.net – HttpError iis config在添加默认路径
- ASP.NET MVC3中基于权限的授权
- asp.net – aspx中的设计视图没有加载
- asp.net-mvc-2 – 如何格式化内联剃刀变量
- entity-framework – 如果使用Entity Framework,
热点阅读