Mein MVC (.NET) hat auf der gesamten Website einige konstante Werte, wie z. B. Telefonnummer, physische Adresse, E-Mail-Adresse usw.
Ich möchte diesen Wert einmal speichern, damit zukünftige Updates einfacher sind, wenn sie ihre Details ändern.
Um meine Frage zu vereinfachen, habe ich mich nur auf die Telefonnummer konzentriert.
Meine Frage ist, wo und wie diese Nummer gespeichert werden soll und ein Problem, mit dem ich bei meiner Entscheidung konfrontiert bin. Im Moment habe ich beschlossen, es als statische Methode in der Datei Global.asax zu speichern, z
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Dies funktioniert sehr gut. In meinem Controller kann ich Verweise auf diese Methode hinzufügen und sie einem ViewBag zuweisen
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
Wie auf vielen Websites wird die Telefonnummer oben auf jeder Seite _Layout.cshtml
angezeigt. Daher ist es logisch , sie in die zu platzieren .
Das Problem, das ich habe, ist, dass es für die Datei _Layout.cshtml keinen Controller gibt (den ich nicht kenne). Die einzige Möglichkeit, den Wert zu übergeben, besteht darin, für jede Ansicht ein ViewBag.Phone einzurichten, z
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();
}
Das ist chaotisch und stinkt, aber ich habe keine Ahnung, wie ich das verbessern kann.
Sollte ich meine globalen Variablen an einem anderen Ort speichern oder gibt es dafür einen besseren Ansatz, da ich sicher bin, dass dies ein häufiges Problem ist.