如何在自定义 HtmlHelper 中构建 RouteLink?我知道如何在局部视图中创建它,但我想使用 RouteLink 在自定义 htmlhelper 扩展方法中建立一个新链接。如何做到这一点?
更新:我注意到 HtmlHelper.GenerateRouteLink。但是我需要输入什么作为参数?
如何在自定义 HtmlHelper 中构建 RouteLink?我知道如何在局部视图中创建它,但我想使用 RouteLink 在自定义 htmlhelper 扩展方法中建立一个新链接。如何做到这一点?
更新:我注意到 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" }) %>
这将产生所需的标记。如有必要,可以使用任何其他重载。RouteLink
一旦你获得了 UrlHelper 的实例,你应该能够在你的 HtmlHelper 方法中做任何你想做的事情
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);