【发布时间】:2011-03-24 15:09:17
【问题描述】:
谁能告诉我当我在控制器中时如何获取用于调用我的路由的 URL?看起来很简单,但我找不到任何关于如何做的参考。如果你需要一个例子,我可以解释更多.. 以前我问了一个路线问题,有人告诉我如何检查哪条路线被满足。这次我的需求有点不同。
谢谢,
曼迪
【问题讨论】:
标签: asp.net-mvc model-view-controller asp.net-mvc-3 routing
谁能告诉我当我在控制器中时如何获取用于调用我的路由的 URL?看起来很简单,但我找不到任何关于如何做的参考。如果你需要一个例子,我可以解释更多.. 以前我问了一个路线问题,有人告诉我如何检查哪条路线被满足。这次我的需求有点不同。
谢谢,
曼迪
【问题讨论】:
标签: asp.net-mvc model-view-controller asp.net-mvc-3 routing
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 属性感兴趣,它提供了有关已解析路由的更多详细信息。
【讨论】:
controller、view 和 action 在您的路由中定义)及其值,这是控制器真正关心的,因为它可以从不同的网址。如果需要文字 url,则需要使用 Request.Url。
既然你有对 Controller 的 Request 属性的引用,你可以这样做:
var url = Request.Url.ToString();
【讨论】:
我会使用 RouteData.Values 属性而不是 Request 属性。 Request 属性在单元测试场景中可能为 null。
【讨论】:
您可以使用路由调试器查看与您的控制器/操作匹配的 url
【讨论】: