2010-06-22 43 views
0

如何在自定義HtmlHelper中組成RouteLink?我知道如何在局部視圖中創建它,但我想使用RouteLink在自定義的htmlhelper擴展方法中建立一個新的鏈接。如何做到這一點?HtmlHelper中的RouteLink?

更新:我注意到HtmlHelper.GenerateRouteLink。但是我需要作爲參數放入什麼?

回答

3

做下面是一個例子。讓我們假設你要鏈接包裝成一個div標籤與某個給定的類,以便您生成的HTML看起來像這樣:

<div class="foo"><a href="/home/index">Some text</a></div> 

你可以寫下面的擴展方法:

public static class HtmlExtensions 
{ 
    public static MvcHtmlString CustomRouteLink(
     this HtmlHelper htmlHelper, 
     string className, 
     string linkText, 
     object routeValues 
    ) 
    { 
     var div = new TagBuilder("div"); 
     div.MergeAttribute("class", className); 
     div.InnerHtml = htmlHelper.RouteLink(linkText, routeValues).ToHtmlString(); 
     return MvcHtmlString.Create(div.ToString()); 
    } 
} 

可能使用像這樣:

<%= Html.CustomRouteLink("foo", "Some text", 
    new { action = "index", controller = "home" }) %> 

這將產生所需的標記。如有必要,可以使用其他overloads of RouteLink

+0

謝謝。起初由於缺少使用語句,我確實遇到了一些問題,所以RouteLink並不知道,甚至Resharper也沒有找到它。我現在使用了LinkExtensions RouteLink方法。 – 2010-06-23 11:44:02

1

一旦你獲得了UrlHelper的實例,你應該能夠做任何你想要在你的HtmlHelper方法

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext); 
+0

我會試試看。 – 2010-06-22 14:14:33

+1

它應該是新的UrlHelper(helper.ViewContext.RequestContext); – 2010-06-22 14:25:31

+0

這似乎並沒有朝着正確的方向發展。任何其他建議? – 2010-06-22 14:30:26