1
嗨 在動作中,我設置了HttpContext.Current.Items.Add(...)
。現在我正在重定向到同一控制器中的另一個操作。我無法獲得當前的HttpContext。ASP.NET MVC中的HttpContext.Current.Items的範圍2
這是不可能的。有沒有解決這個問題的方法,而不是使用臨時數據。
嗨 在動作中,我設置了HttpContext.Current.Items.Add(...)
。現在我正在重定向到同一控制器中的另一個操作。我無法獲得當前的HttpContext。ASP.NET MVC中的HttpContext.Current.Items的範圍2
這是不可能的。有沒有解決這個問題的方法,而不是使用臨時數據。
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");
}
感謝您的答覆。同時我也試着用tempdata。我對新的請求創建有疑問。弄清楚了。再一次感謝你。 – Saravanan 2011-05-10 06:32:28
達林我認爲自ASP.NET MVC 2以來,TempData在Session中持續存在,直到它被讀取。 – ahsteele 2012-02-18 16:03:32