2010-07-09 4 views
9

J'utilise MVC2 et VS2010 pour développer un site Web et utiliser des valeurs globales d'état d'application. Je peux définir une valeur comme 'Application ["hits"] = 0;' en Global.asax mais en essayant d'utiliser la même chose dans un contrôleur MVC toujours obtenir l'erreur suivante:HttpApplicationState non disponible dans un contrôleur MVC

Le nom « Application » n'existe pas dans le contexte actuel

J'ai aussi essayé d'utiliser dans le Global. asax afin de définir une variable globale, mais il déclenche l'erreur suivante:

un espace de noms ne peut pas contenir directement des membres tels que les champs ou les méthodes

Je cherche un moyen de définir des valeurs globales de l'Etat d'application qui sont disponibles dans tous les contrôleurs de mon application web MVC2. Suis-je en train d'omettre quelque chose? Mon contrôleur ressemble à ceci:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MVCApplication.Controllers 
{ 
    [HandleError] 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      Application["hits"] += 1; 

      ViewData["Message"] = "Welcome to ASP.NET MVC!"; 
      return View(); 
     } 

    } 
} 

J'apprécie toutes les solutions et/ou suggestions.

Merci Mehrdad

+0

http://stackoverflow.com/questions/2266533/does-asp-net-mvc-have-application-variables – David

Répondre

10

Je pense que MVC3 vous pouvez accéder à un objet HttpApplicationState réel via le

HttpContext.ApplicationInstance 

propriété. C'est:

HttpApplicationState application = HttpContext.ApplicationInstance.Application 
0

Vous pouvez utiliser une classe statique avec un dictionnaire interne et un indexeur. En outre, avez-vous essayé HttpContext.Current.Application?

+0

Merci Jaroslav, le problème est maintenant résolu en utilisant les éléments suivants dans les contrôleurs: HttpContext.Application ["hits"] – Mehrdad

2

Dans ASP.NET MVC2, j'utilise

HttpContext.Application["foo"] = "bar"; 

et pour obtenir

HttpContext.Application["foo"] 
Questions connexes