Я хочу написать HtmlHelper для визуализации ActionLink с заранее заданными значениями, например.
<%=Html.PageLink("Page 1", "page-slug");%>
где PageLink
- это функция, которая вызывает ActionLink
с известным действием и контроллером, например. "Индекс" и "Страница".
Так как HtmlHelper
и UrlHelper
не существуют внутри класса Controller
или класса, как мне получить относительный URL-адрес для действия внутри класса?
Обновление: Учитывая дополнительные три года накопленного опыта, я имею здесь, здесь мой совет: просто используйте Html.ActionLink("My Link", new { controller = "Page", slug = "page-slug" })
или еще лучше,
<a href="@Url.Action("ViewPage",
new {
controller = "Page",
slug = "my-page-slug" })">My Link</a>
Ваш метод расширения может быть симпатичным и коротким, но он добавляет еще одну непроверенную точку отказа и новое требование к обучению для найма, не добавляя никакой реальной ценности вообще. Подумайте об этом как о разработке сложной системы. Зачем добавлять другую движущуюся часть, если только она не добавляет надежность (нет), читаемость (мало, как только вы читаете больше документов), скорость (нет) или concurrency (none).