我的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没有控制器(我不知道),而我可以传递值的唯一方法是为每个视图(例如EG)设置一个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();
}
这是凌乱和有臭味的,但我不知道该如何改善。
我应该将全局变量存储在其他位置还是有更好的方法,因为我确定这是一个常见问题。