RouteLink в HtmlHelper? - PullRequest
       21

RouteLink в HtmlHelper?

0 голосов
/ 22 июня 2010

Как я могу создать RouteLink в пользовательском HtmlHelper?Я знаю, как сделать это в частичном представлении, но я хочу создать новую ссылку в пользовательском методе расширения htmlhelper с использованием RouteLink.Как это сделать?

Обновление: я заметил HtmlHelper.GenerateRouteLink.Но что мне нужно указать в качестве параметров?

Ответы [ 2 ]

3 голосов
/ 22 июня 2010

Вот пример. Предположим, что вы хотите обернуть ссылки в тег 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.

1 голос
/ 22 июня 2010

Как только вы получите экземпляр UrlHelper, вы сможете делать все, что хотите, в своем методе HtmlHelper

UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
...