Вопрос

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

Обновление: я заметил 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top