RouteLink в HTMLHELPER?
-
29-09-2019 - |
Вопрос
Как я могу составить 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);