MVC (.NET) saya memiliki beberapa nilai konstan di seluruh situs, seperti nomor telepon, alamat fisik, alamat email, dll.
Saya ingin menyimpan nilai ini sekali, sehingga pembaruan di masa mendatang lebih mudah ketika mereka mengubah detailnya.
Untuk membuat pertanyaan saya lebih sederhana, saya hanya fokus pada nomor telepon.
Pertanyaan saya adalah di mana dan bagaimana menyimpan nomor ini dan masalah yang saya hadapi dengan keputusan saya. Saat ini, saya memilih untuk menyimpannya di file Global.asax sebagai metode statis, misalnya
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//logic
}
public static string GetPhoneNumber()
{
return "012345 678 910";
}
}
Ini bekerja dengan sangat baik, di controller saya, saya dapat menambahkan referensi ke metode ini dan menetapkannya ke ViewBag
public ActionResult Contact()
{
ViewBag.Phone = MvcApplication.GetPhoneNumber();
}
Seperti banyak situs, nomor telepon akan terlihat di bagian atas setiap halaman dan dengan demikian, menempatkannya di _Layout.cshtml
adalah logis.
Masalah yang saya miliki adalah tidak ada controller (bukan yang saya tahu) untuk _Layout.cshtml dan satu-satunya cara saya dapat melewati nilainya adalah dengan memiliki ViewBag. Telepon diatur untuk setiap tampilan, 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();
}
Ini berantakan dan bau tetapi saya tidak tahu bagaimana saya bisa meningkatkan ini.
Haruskah saya menyimpan variabel global saya di tempat yang berbeda atau apakah ada pendekatan yang lebih baik untuk ini karena saya yakin ini adalah masalah umum.