gpt4 book ai didi

asp.net-mvc-3 - 为什么 TempData[] 不适用于 IE

转载 作者:行者123 更新时间:2023-12-01 12:59:01 25 4
gpt4 key购买 nike

在我的 MVC3 项目中,有很多 TempData[] 用于在操作之间传递数据。当我使用 Chrome 时,它​​工作得非常完美。但是在 IE 中我无法获得 TempData[] 项目的值。如果有人知道问题是什么,我该如何解决?`

public class SomeController : Controller
{
public ActionResult SomeAction()
{
TempData["id"] = "someData";
return View();

}
}


public class AnotherController : Controller
{
public ActionResult AnotherAction()
{
string data = Convert.ToString(TempData["id"]);
return View();

}
}

`

最佳答案

您永远不应该从将某些内容存储到 TempData 的 Controller 操作中返回 View 。您应该立即重定向到应该使用它的 Controller 操作:

public class SomeController : Controller
{
public ActionResult SomeAction()
{
TempData["id"] = "someData";
return Redirect("AnotherAction", "Another");
}
}


public class AnotherController : Controller
{
public ActionResult AnotherAction()
{
string data = Convert.ToString(TempData["id"]);
return View();
}
}

这样做的原因是 TempData 仅在单个附加请求中存活。因此,例如,如果在 View 内部您向某个 Controller 操作(无论哪个)发送 AJAX 请求,然后在此 View 中有一个指向目标操作的链接,当用户重定向到此目标操作时,TempData 将不再存在因为它在之前完成的 AJAX 请求期间丢失了。

如果您需要将数据存储的时间长于单个重定向,您可以使用 Session。

关于asp.net-mvc-3 - 为什么 TempData[] 不适用于 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com