0

如何在自定义 HtmlHelper 中构建 RouteLink?我知道如何在局部视图中创建它,但我想使用 RouteLink 在自定义 htmlhelper 扩展方法中建立一个新链接。如何做到这一点?

更新:我注意到 HtmlHelper.GenerateRouteLink。但是我需要输入什么作为参数?

4

2 回答 2

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" }) %>

这将产生所需的标记。如有必要,可以使用任何其他重载。RouteLink

于 2010-06-22T16:50:27.180 回答
1

一旦你获得了 UrlHelper 的实例,你应该能够在你的 HtmlHelper 方法中做任何你想做的事情

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
于 2010-06-22T13:43:39.837 回答