My MVC(.NET)には、電話番号、物理アドレス、電子メールアドレスなど、サイト全体で一定の値があります。
この値を1回保存したいので、詳細を変更するときに将来の更新が簡単になります。
質問を簡単にするために、電話番号のみに注目しました。
私の質問は、この番号をどこにどのように保存するか、そして私が決定に直面している問題です。現時点では、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をすべてのビューに設定することです、EG
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();
}
これは面倒で臭いですが、どうすれば改善できるかわかりません。
グローバル変数を別の場所に保存する必要がありますか、これは一般的な問題であると確信しているため、これに対するより良いアプローチがありますか?