【发布时间】:2011-05-10 06:03:04
【问题描述】:
嗨
在一个动作中,我设置了HttpContext.Current.Items.Add(...)。现在我正在重定向到同一个控制器中的另一个动作。我无法获取当前的 HttpContext。
这不可能。是否有解决此问题的方法,而不是使用临时数据。
【问题讨论】:
标签: .net asp.net asp.net-mvc-2 httpcontext
嗨
在一个动作中,我设置了HttpContext.Current.Items.Add(...)。现在我正在重定向到同一个控制器中的另一个动作。我无法获取当前的 HttpContext。
这不可能。是否有解决此问题的方法,而不是使用临时数据。
【问题讨论】:
标签: .net asp.net asp.net-mvc-2 httpcontext
HttpContext 仅在当前 HTTP 请求期间可用。如果您重新编辑到另一个操作,那就是浏览器使用另一个 HttpContext 发送的另一个 HTTP 请求。如果您想在请求之间保留数据,您可以使用 TempData(仅适用于 1 个重定向)或 Session。在幕后 TempData 使用会话作为存储,但它在重定向后被框架自动驱逐。
TempData 示例:
public ActionResult A()
{
TempData["foo"] = "bar";
return RedirectToAction("B");
}
public ActionResult B()
{
// TempData["foo"] will be available here
// if this action is called after redirecting
// from A
var bar = TempData["foo"] as string;
// TempData["foo"] will no longer be available in C
return RedirectToAction("C");
}
会话示例:
public ActionResult A()
{
Session["foo"] = "bar";
return RedirectToAction("B");
}
public ActionResult B()
{
var bar = Session["foo"] as string;
// Session["foo"] will still be available in C
return RedirectToAction("C");
}
【讨论】: