c# - extension - Funciones MVC Razor compartidas en varias vistas
razor html (3)
(Aquí hay una versión más detallada de las respuestas existentes).
Cree una carpeta llamada App_Code
en la raíz del proyecto MVC si aún no existe. Aquí, cree una vista de afeitadora vacía y asígnele el nombre que desee:
Agregue @helper
sy / o métodos static
a él según sea necesario:
@helper ShowSomething()
{
<span>Something</span>
}
@functions
{
public static int CalculateSomething()
{
return 1;
}
}
A continuación, utilícelos desde sus puntos de vista accediendo primero a la vista compartida por nombre:
@Shared.ShowSomething()
@Shared.CalculateSomething()
En mi opinión, tengo funciones que comparten varias páginas:
@functions
{
public HtmlString ModeImage(ModeEnum mode)
{
switch(mode)
{
case AMode: new HtmlString("<img etc..."); break;
// more etc...
}
}
}
¿Hay alguna manera de tenerlo en un archivo separado e incluirlo en cada página sin tener que copiarlo y pegarlo en cada uno? Sé que puedo escribir un archivo .cs y acceder a él por página, pero la función realmente se refiere a la vista y odio tener que recompilar si esta función cambia.
Esto parece que quiere los métodos Razor @helper descritos en la publicación de blog ASP.NET MVC3 y la sintaxis de @helper en Razor por Scott Guthrie.
Aquí está la descripción general ... "La sintaxis de @helper dentro de Razor le permite crear fácilmente métodos de ayuda reutilizables que pueden encapsular la funcionalidad de salida dentro de sus plantillas de visualización. Permiten una mejor reutilización del código y también pueden facilitar un código más legible".
Puede hacer una página de ayuda estática y poner un método static
normal en la página.
Podría llamarlo escribiendo PageName.MyMethod()
cualquier lugar, y creo que no necesitará volver a compilar el proyecto.