Il mio MVC (.NET) ha alcuni valori costanti in tutto il sito, come il numero di telefono, l'indirizzo fisico, l'indirizzo e-mail ecc.
Vorrei memorizzare questo valore una volta, quindi gli aggiornamenti futuri sono più facili per quando cambiano i loro dettagli.
Per semplificare la mia domanda, mi sono concentrato solo sul numero di telefono.
La mia domanda è dove e come memorizzare questo numero e un problema che sto affrontando con la mia decisione. Al momento, ho scelto di memorizzarlo nel file Global.asax come metodo statico, ad es
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Funziona molto bene, nel mio controller posso aggiungere riferimenti a questo metodo e assegnarlo a un ViewBag
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
Come per molti siti, il numero di telefono sarà visibile nella parte superiore di ogni pagina e, come tale, posizionandolo in _Layout.cshtml
è logico.
Il problema che ho è che non esiste un controller (non che io sappia) per _Layout.cshtml e l'unico modo in cui posso passare il valore è avere un ViewBag.Phone impostato per ogni vista, ad es.
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
return View();
}
public ActionResult About()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
return View();
}
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
return View();
}
Questo è disordinato e puzzolente, ma non ho idea di come posso migliorare.
Dovrei archiviare le mie variabili globali in un posto diverso o esiste un approccio migliore per questo in quanto sono sicuro che si tratti di un problema comune.