Deseo escribir un HtmlHelper para representar un ActionLink con valores preestablecidos, por ej.Uso de Html.ActionLink y Url.Action (...) desde el interior del controlador
<%=Html.PageLink("Page 1", "page-slug");%>
donde PageLink
es una función que llama a ActionLink
con una acción conocida y el controlador, por ejemplo. "Índice" y "Página".
Dado que HtmlHelper
y UrlHelper
no existen dentro de una clase Controller
, ¿cómo obtengo la URL relativa a una acción desde dentro de una clase?
Actualización: Teniendo en cuenta los tres años adicionales de experiencia acumulada que tengo ahora, aquí es mi consejo: sólo tiene que utilizar Html.ActionLink("My Link", new { controller = "Page", slug = "page-slug" })
o mejor aún,
<a href="@Url.Action("ViewPage",
new {
controller = "Page",
slug = "my-page-slug" })">My Link</a>
Su método de extensión puede ser lindo y corto, pero se suma otro punto-de-fracaso no probado y un nuevo requisito de aprendizaje para las contrataciones sin agregar ningún valor real de ningún tipo. Piense en ello como el diseño de un sistema complejo. Por qué agregar otra parte móvil, a menos que agregue confiabilidad (no), legibilidad (poco, una vez que lea más documentos), velocidad (ninguna) o concurrencia (ninguna).
+1 para la actualización. También señalaría a los buscadores futuros a esta pregunta al llamar 'Url.Action' desde dentro del controlador - http://stackoverflow.com/questions/2031995/call-urlhelper-in-models-in-asp-net-mvc – brichins