ser*_*ads 4 internet-explorer google-chrome tempdata razor asp.net-mvc-3
\xc4\xb0n 我的 MVC3 项目,有大量的 TempData[] 用于在操作之间传递数据。当我使用 Chrome 时,它的效果非常完美。但在 IE 中我无法获取 TempData[] 项的值。如果有人知道问题是什么以及我该如何解决它?
\n\npublic class SomeController : Controller\n{\n public ActionResult SomeAction()\n {\n TempData["id"] = "someData";\n return View();\n\n }\n}\n\n\npublic class AnotherController : Controller\n{\n public ActionResult AnotherAction()\n {\n string data = Convert.ToString(TempData["id"]);\n return View();\n\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n`
\n您永远不应该从将某些内容存储到 TempData 的控制器操作返回视图。您应该立即重定向到应该使用它的控制器操作:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
原因是 TempData 仅在单个附加请求时存在。因此,例如,如果在视图内向某个控制器操作(无论是哪个)发送 AJAX 请求,然后在此视图中有一个指向目标操作的链接,则当用户重定向到此目标操作时,TempData 将不再存在因为它在之前完成的 AJAX 请求期间丢失了。
如果您需要存储数据的时间长于单个重定向,则可以使用 Session。
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |