Meu MVC (.NET) possui valores constantes em todo o site, como número de telefone, endereço físico, endereço de email etc.
Gostaria de armazenar esse valor uma vez, para que futuras atualizações sejam mais fáceis quando eles mudarem seus detalhes.
Para simplificar minha pergunta, concentrei-me apenas no número de telefone.
Minha pergunta é onde e como armazenar esse número e um problema que estou enfrentando com minha decisão. No momento, eu escolhi armazená-lo no arquivo Global.asax como um método estático, por exemplo,
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Isso funciona muito bem, no meu controlador eu posso adicionar referências a este método e atribuí-lo a um ViewBag
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
De acordo com muitos sites, o número de telefone estará visível na parte superior de todas as páginas e, como tal, colocá-lo no _Layout.cshtml
é lógico.
O problema que tenho é que não há um controlador (não que eu saiba) para o _Layout.cshtml e a única maneira de passar o valor é ter um ViewBag.Phone configurado para todas as visualizações, por exemplo
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();
}
Isso é confuso e fedorento, mas não tenho idéia de como posso melhorar isso.
Devo armazenar minhas variáveis globais em um local diferente ou há uma abordagem melhor para isso, pois tenho certeza de que esse é um problema comum.