Estoy usando la vista de maquinilla de afeitar con asp mvc vista previa 3Métodos de extensión de vista ASP MVC Razor, cómo crear métodos de vista 'global'?
Estoy tratando de crear algunos métodos que me gustaría tener disponibles directamente en las vistas. ¿Estos no son realmente los métodos Html helper así que no creo que la extensión de HtmlHelper tenga sentido?
mi objetivo, ser capaz de llamar a los métodos de la vista, es decir
@HelloWorld(); vs @Html.HelloWorld()
puedo conseguir Html.HelloWorld para trabajar mediante la creación de un método de extensión en HtmlHelper
public static class HtmlExtensions
{
public static string HelloWorld(this HtmlHelper helper)
{
return "Hello";
}
}
me gustaría hacer lo mismo pero para la vista; mi problema, ¿qué tipo de objeto es la vista?
Nota: yo era capaz de conseguir que esto funcione mediante la definición de los métodos en la página .cshtml
@functions
{
public string HelloWorld()
{
return "Hello";
}
}
@HelloWorld() @* now this works *@
Luego trató de poner este código mi archivo _viewstart.cshtml pensando que estaría disponible en todos los puntos de vista pero no
era si sabía qué tipo de la vista se creo que se podría extender fácilmente, cualquier ayuda apreció
+1 . Esta es una solución mucho más agradable que escribir un método de extensión en WebViewPage –
En realidad, estoy totalmente en desacuerdo con Noel Abrahams: es en este tipo de situación que se inventaron los métodos de extensión. La solución dada anteriormente significa que tiene un cambio de configuración que deberá realizar en cada aplicación web en la que desee usarla. Además, el uso de un método de extensión lo convierte en un uso 'extraíble' para las Vistas que desean usarlo, mientras que al cambiar la clase base obliga a cada Vista a heredar eso, lo quiera o no quiera. –