Normalmente en una vista ASP.NET se podría usar la siguiente función para obtener una URL (no una <a>
):
Url.Action("Action", "Controller");
Sin embargo, no puedo encontrar cómo hacerlo desde un asistente HTML personalizado. yo tengo
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
La variable auxiliar tiene los métodos Action y GenerateLink, pero generan <a>
los de. Cavé un poco en el código fuente ASP.NET MVC, pero no pude encontrar una manera directa.
El problema es que la Url anterior es miembro de la clase de vista y para su creación de instancias necesita algunos contextos y mapas de ruta (con los que no quiero tratar y no se supone que lo haga de todos modos). Alternativamente, la instancia de la clase HtmlHelper también tiene algún contexto que supongo que es la cena del subconjunto de la información de contexto de la instancia de Url (pero nuevamente no quiero tratar con ella).
En resumen, creo que es posible, pero dado que todas las formas en que pude ver, implican alguna manipulación con algunas cosas más o menos internas de ASP.NET, me pregunto si hay una mejor manera.
Editar: por ejemplo, una posibilidad que veo sería:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
Pero no parece correcto. No quiero tratar con instancias de UrlHelper yo mismo. Debe haber una manera más fácil.