【问题标题】:How to get RouteCollection from a request in ASP.NET MVC 4如何从 ASP.NET MVC 4 中的请求中获取 RouteCollection
【发布时间】:2012-07-23 11:58:27
【问题描述】:

这是我的 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/ 将是匹配模式。 我如何知道与上述请求匹配的条目?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc url-routing


    【解决方案1】:

    RouteTable.Routes.GetRouteData(HttpContextBase)

    【讨论】:

    • 我从 httpcontest 得到了一些东西。将在我的办公时间更新
    • @kbvishnu 真的吗?
    【解决方案2】:

    安装RouteDebugger nuget 包并在您的web.config 中启用它。这会告诉您哪些路线可以被击中以及原因。

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

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

    【讨论】:

    • 有内置方法吗?
    • @VeeKeyBee。不是我知道如果。但是设置上述内容只需要几分钟。你不能有什么理由吗?
    【解决方案3】:

    我不确定这是否是您要查找的内容,但您可以创建自定义路由约束,以防止匹配路由,除非匹配某些自定义条件。

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

    查看此网址了解更多信息 - http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-custom-route-constraint-cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多