2010-07-09 53 views
9

我正在使用MVC2和VS2010开发一个网站,并且需要使用Application State全局值。我可以设置一个值,如'Application [“hits”] = 0;'在Global.asax中却试图用同样的在MVC控制器总是收到以下错误时:HttpApplicationState在MVC控制器中不可用

名称“应用”不会在目前情况下

存在我还使用了全球试过。 ASAX为了定义一个全局变量,但它触发以下错误:

命名空间不能直接包含成员如字段或方法

我正在寻找一种方式来定义可用的全球应用程序状态值在我的MVC2 Web应用程序的所有控制器中。我省略了什么吗?我的控制器看起来像这样:

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(); 
     } 

    } 
} 

我欣赏任何解决方案和/或建议。

感谢 迈赫达德

+0

http://stackoverflow.com/questions/2266533/does-asp-net-mvc-have-application-variables – David 2010-07-09 14:34:26

回答

10

认为,在MVC3您可以通过

获得访问一个实际的HttpApplicationState对象
HttpContext.ApplicationInstance 

财产。那就是:

HttpApplicationState application = HttpContext.ApplicationInstance.Application 
0

你可以使用一个静态类,其内部字典和索引。

另外,你有没有试过HttpContext.Current.Application

+0

谢谢雅罗斯拉夫,这个问题可以用在控制器下面现在问题解决了: HttpContext.Application [“hits”] – Mehrdad 2010-07-09 15:02:06

2

在ASP.NET MVC2,我使用

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

,并获得

HttpContext.Application["foo"]