2011-07-01 73 views
3

我有一個疑問,這是以下幾點:顯示MVC URL路徑通過控制器/動作/ RouteValues組合

當我使用下面的代碼:

@(Html.ActionLink("Click Me", "ACTION", new {QueryName = ViewBag.QueryName})) 

我會得到一個HTML的輸出是這樣的: < A HREF = 「HTTP://本地主機/ ControllerName/ACTION QueryName = 098」 >點擊我</A >

好,但世界衛生大會如果我想將以下內容作爲HTML輸出?

<跨度>我想跳轉鏈接http://localhost/ControllerName/ACTION?QueryName=098的只是「HREF」的一部分,而「一」的標籤</SPAN >

我必須爲它編寫的擴展還是我一些先前的條款做到這一點?

我希望我已經夠清楚了。

感謝

UPDATE

到目前爲止,我寫了一個擴展,這顯然是不做到這一點的最好辦法,因爲你可以看到下面,但我需要它:

public static class ActionURLPathExtension 
{ 
    public static MvcHtmlString ActionURLPath(this HtmlHelper helper , string ActionName, string ControllerName, object RouteValues) 
    { 
     string resultURL=LinkExtensions.ActionLink(helper," ",ActionName,ControllerName, RouteValues, new object()).ToHtmlString(); 
     resultURL= resultURL.Replace("</a>","") .Replace("<a href=\"","") .Replace("\">","").Trim() ; 

     return MvcHtmlString.Create(helper.ViewContext.HttpContext.Server.UrlDecode(resultURL)); 
    } 
} 

在我用這樣的HTML:

<span>Now you can paste this URL in your address bar : @(Html.ActionURLPath("CarregarFiltros", "Filtros", new { QueryId = "%0" , noCache = new Random().Next(0,1989) }))</span> 

回答

4

您可以使用Url.Action,像這樣:

@Url.Action("Action", new { QueryName = ViewBag.QueryName }) 

,或者如果您需要完全合格的URL:

@Url.Action("Action", "Controller", new { QueryName = ViewBag.QueryName }, "http") 
+0

嘿克,謝謝。但不幸的是,這段代碼觸發了指定的操作。我創建了一個視圖來演示什麼是所需的HTML輸出結果,我將編輯原始問題。 – ClayKaboom

+1

@ClayKaboom:這個答案是正確的。 Url.Action返回匹配動作的url字符串。見http://geekswithblogs.net/liammclennan/archive/2008/05/21/122298.aspx –

+0

@gram,確實如此。我已經嘗試過,但我沒有注意到我使用Html.Action而不是Url.Action。謝謝! – ClayKaboom

相關問題