Мой MVC (.NET) имеет некоторые постоянные значения по всему сайту, такие как номер телефона, физический адрес, адрес электронной почты и т. Д.
Я хотел бы сохранить это значение один раз, поэтому будущие обновления будут проще, когда они изменят свои данные.
Чтобы сделать мой вопрос проще, я сосредоточился только на номере телефона.
У меня вопрос, где и как хранить этот номер, и проблема, с которой я сталкиваюсь в своем решении. На данный момент я решил сохранить его в файле Global.asax как статический метод, например
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Это работает очень хорошо, в моем контроллере я могу добавить ссылки на этот метод и назначить его ViewBag
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
Как и на многих сайтах, телефонный номер будет отображаться в верхней части каждой страницы, поэтому размещение его в _Layout.cshtml
логическом порядке.
У меня проблема в том, что для _Layout.cshtml нет контроллера (не то, что я знаю), и единственный способ передать это значение - настроить ViewBag.Phone для каждого представления, например
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();
}
Это грязно и вонючий, но я понятия не имею, как я могу улучшить это.
Должен ли я хранить свои глобальные переменные в другом месте или есть лучший подход для этого, так как я уверен, что это общая проблема.