My 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 สำหรับทุกมุมมอง 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();
}
นี่มันยุ่งและเหม็น แต่ฉันไม่รู้ว่าฉันจะปรับปรุงมันได้อย่างไร
ฉันควรจะเก็บตัวแปรทั่วโลกของฉันไว้ในที่อื่นหรือมีแนวทางที่ดีกว่าสำหรับเรื่องนี้เพราะฉันแน่ใจว่านี่เป็นปัญหาทั่วไป