单击链接后,MVC HttpContext.Current.Items为null

时间:2014-03-24 19:16:44

标签: c# asp.net-mvc-4 razor

HttpContext.Items 是否有限制?如果有的话,还有什么选择?

FirstController 索引视图中,我正在设置项目。

public class FirstController : Controller
{
    public ActionResult Index()
    {
        HttpContext.Items["Sample"] = "DATA";
        return View();
    }
}

<a href="/SecondController/TestView">Sample Link</a>

当我尝试在 SecondController 中获取值时,它会给我null而不是'DATA'

public class SecondController : Controller
{
    public ActionResult TestView()
    {
        string text = HttpContext.Current.Items["Sample"];
        return View();
    }
}   

3 个答案:

答案 0 :(得分:1)

HttpContext.Items “获取一个键/值集合,可用于在HTTP请求期间组织和共享数据[...]

您需要像Session这样的有状态机制来保留请求之间的数据:

Session["Sample"] = "DATA";

另见what is correct way of storing data between requests in asp.mvc

答案 1 :(得分:0)

Items的{​​{1}}个问题用于在单个请求中共享数据。当您将值设置为第一个控制器中的HttpContext键时,一旦请求管道完成,它就会被丢弃。

我认为您正在寻找可通过HttpContext.Session媒体访问的Sample。您可以在代码中将HttpSessionState替换为HttpContext.Items,它应该按原样运行。

HttpContext.Session

答案 2 :(得分:0)

对于单个HTTP请求,

HttpContext的数据保留在内存中,然后将其处理掉。