HtmlHelper中的RouteLink?

时间:2010-06-22 13:32:15

标签: asp.net-mvc routelink

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

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

2 个答案:

答案 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);