Я хочу написать HtmlHelper для рендеринга ActionLink с заданными значениями, например.Использование Html.ActionLink и Url.Action (...) изнутри контроллера
<%=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>
Ваш метод расширения может быть мило и короткая, но это добавляет еще одна непроверенная точка отказа и новое требование к обучению для найма, не добавляя никакой реальной ценности вообще. Подумайте об этом как о разработке сложной системы. Зачем добавлять другую движущуюся часть, если только она не добавляет надежности (нет), читаемости (мало, как только вы читаете больше docs), скорость (нет) или параллелизм (нет).
+1 для уточнения. Я бы также указал будущим искателям на этот вопрос при вызове 'Url.Action' изнутри контроллера - http://stackoverflow.com/questions/2031995/call-urlhelper-in-models-in-asp-net-mvc – brichins