如何在自定义HtmlHelper中组成RouteLink?我知道如何在局部视图中创建它但我想使用RouteLink在自定义htmlhelper扩展方法中建立一个新链接。如何做到这一点?
更新:我注意到了HtmlHelper.GenerateRouteLink。但是我需要把它作为参数放入什么?
答案 0 :(得分: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
。
答案 1 :(得分:1)
获得UrlHelper的实例后,您应该可以在HtmlHelper方法中执行任何操作
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);