如何在自定義HtmlHelper中組成RouteLink?我知道如何在局部視圖中創建它,但我想使用RouteLink在自定義的htmlhelper擴展方法中建立一個新的鏈接。如何做到這一點?HtmlHelper中的RouteLink?
更新:我注意到HtmlHelper.GenerateRouteLink。但是我需要作爲參數放入什麼?
如何在自定義HtmlHelper中組成RouteLink?我知道如何在局部視圖中創建它,但我想使用RouteLink在自定義的htmlhelper擴展方法中建立一個新的鏈接。如何做到這一點?HtmlHelper中的RouteLink?
更新:我注意到HtmlHelper.GenerateRouteLink。但是我需要作爲參數放入什麼?
做下面是一個例子。讓我們假設你要鏈接包裝成一個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
。
一旦你獲得了UrlHelper的實例,你應該能夠做任何你想要在你的HtmlHelper方法
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
我會試試看。 – 2010-06-22 14:14:33
它應該是新的UrlHelper(helper.ViewContext.RequestContext); – 2010-06-22 14:25:31
這似乎並沒有朝着正確的方向發展。任何其他建議? – 2010-06-22 14:30:26
謝謝。起初由於缺少使用語句,我確實遇到了一些問題,所以RouteLink並不知道,甚至Resharper也沒有找到它。我現在使用了LinkExtensions RouteLink方法。 – 2010-06-23 11:44:02