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

前端 未结 7 1520
不思量自难忘°
不思量自难忘° 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:26

    Building on @Darin-Dimitrov pattern answered above, I passed a model into a partial view, which I loaded into a _Layout page.

    I needed to load a web page from an external resource on Application Load, which will be used as the header navigation across multiple sites. This is in my Global.asax.cs

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
    
        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    
        Application["HeaderNav"] = GetHtmlPage("https://site.com/HeaderNav.html");
    }
    
    static string GetHtmlPage(string strURL)
    {
        string strResult;
        var objRequest = HttpWebRequest.Create(strURL);
        var objResponse = objRequest.GetResponse();
        using (var sr = new StreamReader(objResponse.GetResponseStream()))
        {
            strResult = sr.ReadToEnd();
            sr.Close();
        }
        return strResult;
    }
    

    Here is my controller Action for the partial view.

    public class ProfileController : BaseController
    {
        public ActionResult HeaderNav()
        {
            var model = new Models.HeaderModel
            {
                NavigationHtml = HttpContext.Application["HeaderNav"] as string
            };
            return PartialView("_Header", model);
        }
    }
    

    I loaded the partial view in the _Layout page like this.

    
    

    The partial view _Header.cshtml is very simple and just loads the html from the application variable.

    @model Models.HeaderModel
    @MvcHtmlString.Create(Model.NavigationHtml)
    

提交回复
热议问题