Sto usando Vista rasoio con asp anteprima mvc 3ASP MVC Razor visualizza i metodi di estensione, come creare metodi di visualizzazione 'globali'?
Sto cercando di creare alcuni metodi che vorrei disponibili direttamente nelle viste. Questi non sono realmente metodi helper HTML quindi non penso che l'estensione di HtmlHelper abbia senso?
il mio obiettivo, essere in grado di chiamare i metodi della vista cioè
@HelloWorld(); vs @Html.HelloWorld()
posso ottenere Html.HelloWorld per sviluppare un metodo di estensione sul HtmlHelper
public static class HtmlExtensions
{
public static string HelloWorld(this HtmlHelper helper)
{
return "Hello";
}
}
vorrei fare la stessa cosa ma per la vista; il mio problema: che tipo di oggetto è la vista?
Nota: Sono stato in grado di ottenere questo al lavoro, definendo i metodi nella pagina .cshtml
@functions
{
public string HelloWorld()
{
return "Hello";
}
}
@HelloWorld() @* now this works *@
poi ho cercato di inserire questo codice mio file _viewstart.cshtml pensando che sarebbe stato disponibile in tutte le viste ma non
era se sapessi quale tipo la vista era penso che potrebbe essere facilmente esteso, qualsiasi aiuto apprezzato
+1 . Questa è una soluzione molto migliore rispetto alla scrittura di un metodo di estensione su WebViewPage –
In realtà, non sono affatto d'accordo con Noel Abrahams - è questo tipo di situazione per cui sono stati inventati i metodi di estensione. La soluzione sopra riportata significa che si dispone di una modifica alla configurazione che è necessario apportare in ogni app Web in cui si desidera utilizzarla. Inoltre, l'utilizzo di un metodo di estensione lo rende un utilizzo "pull" per le Views che vogliono usarlo, mentre cambiando la classe base forza ogni View ad ereditarlo indipendentemente dal fatto che lo voglia o meno. –