2015-06-10 63 views
1

我嘗試獲取網站的URL加上當前的控制器沒有調用它的方法。獲取沒有調用它的方法的名稱的網址

的ExampleController內部,ExampleMethod Request.Url.ToString()

=>http://localhost:51747/.../ExampleController/ExampleMethod

我需要

http://localhost:51747/.../ExampleController

我想使用的解決方案是解析和除去一切在最後一個斜槓後,但我不確定是否已有一種方法使用服務器信息來完成此操作。

+0

[可能重複的問題嗎?](http://stackoverflow.com/q/18248547/636942) – br4d

+0

只是爲了讓你開始,如果你有機會獲得Url幫手,我會研究'RouteData'而不是治療url作爲字符串.. – Octopoid

+0

需要生成通過電子郵件發送的字符串。 –

回答

0

您的問題可以通過使用Url.Action HTML helper重載之一來解決。要生成例如網址:

http://localhost:51747/.../ExampleController

你需要做的:

@Url.Action("ExampleController", "Index", null, Request.Url.Scheme) 

假設你使用的是默認的ASP.NET MVC路由配置。

更詳細地說,如果您向助手提供的操作是routeconfig中默認的一個操作,則不會在生成的URL中指定它。

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

請參閱action =「Index」默認值?無論您設置了什麼,在生成URL時都需要使用什麼。

+0

根據@ br4d的第一條評論,您可以使用: 'string controllerName = this.ControllerContext.RouteData.Values [「controller」]。ToString();' 按照您的要求獲取當前控制器名稱。 – Octopoid