How do you access application variables in asp.net mvc 3 razor views?

前端 未结 7 1519
不思量自难忘°
不思量自难忘° 2020-12-14 16:00

I set a Application variable in my global.asa.cs with:

    protected void Application_Start()
    {
        ...

        // load all application settings
            


        
相关标签:
7条回答
  • 2020-12-14 16:30

    Views are not supposed to pull data from somewhere. They are supposed to use data that was passed to them in form of a view model from the controller action. So if you need to use such data in a view the proper way to do it is to define a view model:

    public class MyViewModel
    {
        public string LicenseName { get; set; }
    }
    

    have your controller action populate it from wherever it needs to populate it (for better separation of concerns you might use a repository):

    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            LicenseName = HttpContext.Application["LICENSE_NAME"] as string
        };
        return View(model);
    }
    

    and finally have your strongly typed view display this information to the user:

    <div>@Model.LicenseName</div>
    

    That's the correct MVC pattern and that's how it should be done.

    Avoid views that pull data like pest, because today it's Application state, tomorrow it's a foreach loop, next week it's a LINQ query and in no time you end up writing SQL queries in your views.

    0 讨论(0)
提交回复
热议问题