In un'applicazione Web .NET a rasoio, sto provando a impostare a livello di programmazione il Layout
. Non riesco a utilizzare _ViewStart.cshtml
e non voglio impostare lo @{ Layout = "..." }
su ogni pagina. Questo è quello che sono venuto con:.NET MVC 3 Layout a livello di programmazione
Una base WebViewPage
classe:
public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T>
{
private object _layout;
public new dynamic Layout { get { return _layout; } }
public override void InitHelpers()
{
base.InitHelpers();
_layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml";
}
}
E nell'applicazione web.config
ho specificare tutte al fine di utilizzare questa pagina di base. Ma il Layout
non è mai usato sembra. Cosa potrebbe essere sbagliato qui?
Questo sembra causare uno stackoverflow. Quando il file Layout.cshtml contiene una vista parziale, InitHelpers viene richiamato e imposta il layout, quindi Layout.cshtml sembra essere nuovamente inizializzato e imposta nuovamente il layout, ecc. – jaap
Hai ragione. Puoi fare qualcosa per risolvere questo. Uno di questi utilizza un flag booleano per verificare che il 'Layout' sia assegnato o meno. Che ho usato nel mio progetto, è che ho 3 classi base per i layout, le pagine di visualizzazione e le viste parziali. Inoltre puoi trovare altri modi speciali per il tuo progetto –
Non riesco a parlare bene l'inglese. Mi dispiace se le mie frasi non sono comprensibili: D –