2012-04-09 83 views
4

我問了一個類似的問題here我認爲這是一個非常簡單的(當然不適合我)。我有一個Html幫助器的擴展方法,我需要用HtmlHelper獲取當前視圖的URL。有人有任何想法嗎?在ASP.NET MVC中使用HtmlHelper獲取當前視圖的Url 3

+1

你必須記住,一個視圖與控制器操作不同。 MVC路由基於控制器和操作。操作可以將任何視圖指定爲輸出。這意味着您不能總是依賴視圖名稱與Action相同。你能給我們一個你想用它做什麼的例子嗎? – 2012-04-09 13:42:03

+0

@Nick Bork其實我在這裏問一個主要問題:http://stackoverflow.com/questions/10069687/use-htmlhelper-to-get-action-in-beginform-method-of-asp-net-mvc-3我在表單標籤中需要action屬性的值,我認爲這個值與當前視圖的Url相等。 – Saeid 2012-04-09 14:03:22

+0

視圖沒有URL,控制器動作。一個View只是一些HTML的一部分。您的操作在服務器上執行一些CRUD,然後決定返回哪個HTML塊。如果不經過控制器操作(除了嵌套在視圖中的PartialView),您絕不能訪問視圖。現在,大多數視圖名稱與Action名稱匹配,但情況並非總是如此。我已經添加了一個使用Url助手的代碼示例。 Url幫助程序允許您獲取特定路線或控制器操作的URL。這應該有助於填充表單的操作標籤。 – 2012-04-09 14:30:11

回答

5

如果你只是想要的網址,那麼你可以通過Request.Url對象得到它。這將返回一個Uri,但是如果您想要原始URL,則返回Request.RawUrl

6

,如果你想獲得的路由信息​​,像被稱爲

您可以訪問RouteData字典從ViewContext對象

會是這樣

@ViewContext.RouteData.Values["Controller"] 
控制器或動作方法

RouteData字典你可以得到所有關於控制器,動作和額外參數的名稱所需的信息,這取決於你想要什麼

9

基於您的評論,你掛我想你想用URL助手以獲取表單動作的URL原來的線程,但我可能誤解了你想要的東西:

在查看:

@Url.Action(null) returns the current controller/action 
@Url.Action("Action") returns a custom action with current controller 
@Url.Action("Action","Controller") returns a custom controller and action 

在HTML助手:

public static MvcHtmlString MySpecialHelper(this HtmlHelper htmlHelper) 
{ 
     UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext,htmlHelper.RouteCollection); 
     string url = urlHelper.Action("Controller","Action"); 

     //To get the action based on the current Action/Controller use: 
     url = urlHelper.Action(htmlHelper.ViewData["action"] as string); 

     //or 
     url = urlHelper.Action(null); 

     return new MvcHtmlString(url); 
} 
0

您可以使用Request.RawUrl屬性或Request.Url.ToString()或Request.Url.AbsoluteUri。

0

您可以使用HTML輔助傳遞對象頁作爲參考,就像這樣:

@helper GoHome(WebViewPage page) 
{ 
    <a href="@page.Url.Action("Index", "Home")"></a> 
} 

一個在視圖只需使用:

@Links.GoHome(this) 
相關問題