2011-03-24 87 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屬性可能爲空。

相關問題