繁体   English   中英

如何从ASP.NET MVC 4中的请求获取RouteCollection

[英]How to get RouteCollection from a request in ASP.NET MVC 4

这是我的global.asax(注册路线)

  routes.MapRoute("NewDatabase",
             "Server/{serverId}/Instances/{instanceId}/NewDatabase/",
             new { controller = "Server", action = "NewDatabase" }
             );

            routes.MapRoute(
           "Instance",
           "Server/{id}/Instances/{instanceId}/Databases",
           new { controller = "Server", action = "Databases", id = "id",instanceId="instanceId" }
           );

            routes.MapRoute(
           "Database",
           "Server/{id}/Instances",
           new { controller = "Server", action = "Instances", id = "id" }
           );

如果xyz.com/Server/12/Instance/1/NewDatabase是服务器的必需URL,则Server/{serverId}/Instances/{instanceId}/NewDatabase/将是匹配的模式。 我如何知道上述要求匹配的条目?

谢谢

RouteTable.Routes.GetRouteData(HttpContextBase)

安装RouteDebugger nuget软件包并在您的web.config中启用它。 这告诉您哪些路线可以命中,为什么。

<add key="RouteDebugger:Enabled" value="true" />

您所要做的就是导航到您的网址。 RouteDebugger会将路线信息添加到页面底部。

我不确定这是否是您要寻找的东西,但是您可以创建一个自定义路由约束,使您可以阻止匹配某个路由,除非满足某些自定义条件。

您可以实现Match方法,该方法返回一个布尔值。 如果返回false,则与约束关联的路由将与浏览器请求不匹配。 此方法具有RouteValueDictionary,因此您可以从那里检查路线值。

有关更多信息,请参见此url- http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-custom-route-constraint-cs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM