2011-03-24 88 views
4

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

感谢,

曼迪

回答

6

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属性感兴趣,该属性提供了有关解析路线的更多详细信息。

+0

非常感谢大卫。你的答案是完美的。我一直在看RouteData。我看到有一个url属性,但无法实现。你知道这是为什么吗? Mandy – 2011-03-24 15:22:54

+0

@Mandy在通过Intellisense检查时,我在RouteData上看不到一个.Url属性,虽然我可能在错误的位置查找。 RouteData应该仅存储路由组件标记(通常为路由中定义的“controller”,“view”和“action”)的列表及其值,这是控制器真正关心的内容,因为它可以从不同的网址。如果您需要文字网址,则需要使用Request.Url。 – 2011-03-24 16:45:44

5

既然你已经控制器的请求属性的引用,你可以做:

var url = Request.Url.ToString(); 
1

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

相关问题