【问题标题】:MVC3 Routing - How do I get the URL when inside the controllerMVC3 路由 - 如何在控制器内部获取 URL
【发布时间】:2011-03-24 15:09:17
【问题描述】:

谁能告诉我当我在控制器中时如何获取用于调用我的路由的 URL?看起来很简单,但我找不到任何关于如何做的参考。如果你需要一个例子,我可以解释更多.. 以前我问了一个路线问题,有人告诉我如何检查哪条路线被满足。这次我的需求有点不同。

谢谢,

曼迪

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-3 routing


    【解决方案1】:

    Use the Url property of the Request object.

    public ActionResult MyAction()
    {
        var url = Request.Url;
    
        /// .....
    
        return View();    
    }
    

    That will return a Uri object with everything you need

    您可能还对控制器的 RouteData 属性感兴趣,它提供了有关已解析路由的更多详细信息。

    【讨论】:

    • 非常感谢大卫。你的答案很完美。我一直在看RouteData。我看到其中有一个 url 属性,但无法访问它。你知道这是为什么吗?曼迪
    • @Mandy 通过 Intellisense 检查时,我在 RouteData 上看不到 .Url 属性,尽管我可能看错了地方。 RouteData 应该只存储路由组件令牌的列表(通常,controllerviewaction 在您的路由中定义)及其值,这是控制器真正关心的,因为它可以从不同的网址。如果需要文字 url,则需要使用 Request.Url。
    【解决方案2】:

    既然你有对 Controller 的 Request 属性的引用,你可以这样做:

    var url = Request.Url.ToString();
    

    【讨论】:

      【解决方案3】:

      我会使用 RouteData.Values 属性而不是 Request 属性。 Request 属性在单元测试场景中可能为 null。

      【讨论】:

        【解决方案4】:

        您可以使用路由调试器查看与您的控制器/操作匹配的 url

        more information

        【讨论】:

          猜你喜欢
          • 2012-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-21
          • 1970-01-01
          • 2012-01-08
          相关资源
          最近更新 更多