Mój MVC (.NET) ma pewne stałe wartości w całej witrynie, takie jak numer telefonu, adres fizyczny, adres e-mail itp.
Chciałbym zapisać tę wartość raz, aby przyszłe aktualizacje były łatwiejsze, gdy zmienią swoje dane.
Aby uprościć moje pytanie, skupiłem się tylko na numerze telefonu.
Moje pytanie dotyczy tego, gdzie i jak przechowywać ten numer, oraz problemu, który napotyka moja decyzja. W tej chwili postanowiłem zapisać go w pliku Global.asax jako metodę statyczną, np
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Działa to bardzo dobrze, w moim kontrolerze mogę dodać odniesienia do tej metody i przypisać ją do ViewBag
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
Jak w wielu witrynach, numer telefonu będzie widoczny u góry każdej strony, dlatego umieszczenie go w _Layout.cshtml
logicznym miejscu jest logiczne.
Problem, który mam, to brak kontrolera (nie wiem, że) dla _Layout.cshtml, a jedynym sposobem na przekazanie wartości jest skonfigurowanie ViewBag.Phone dla każdego widoku, np.
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();
}
Jest bałaganiarski i śmierdzący, ale nie mam pojęcia, jak mogę to poprawić.
Czy powinienem przechowywać moje zmienne globalne w innym miejscu, czy jest to lepsze podejście, ponieważ jestem pewien, że jest to powszechny problem.