gpt4 book ai didi

asp.net-mvc - 在设置 TempData ["myvalue"] = "foo"之前调用 MVC 3 Session.Abandon() 导致下一个 Controller 将 TempData 设置为 null

转载 作者:行者123 更新时间:2023-12-02 07:38:36 26 4
gpt4 key购买 nike

我有一个 Controller 将逻辑寻找: session 值

 //checks value null etc..  for existing record in session memory.
Session["certnum"]

然后在 Controller 中我决定有一个条件:

 //is called to initiate a New Record that will be created.
Session.Abandon();

但是在程序编码中是Session.Abandon();在创建 TempData["myobject"] = "foo"之前出现,并且在单步执行代码后,立即窗口中的 TempData 显示了我的值,一切看起来都很好。然后重定向到另一个 Controller 时:

return RedirectToAction("ChildInfo", "NewRecord");  

此 ChildInfo 方法不再具有 TempData 值...现在它为 null。在设置 TempData 值之前调用了 session 放弃方法,不确定这是否是 MVC session 的错误,但这对我来说毫无意义。如果我正在创建一个新的轻量级 session TempData,那么它应该保留到下一个 Controller 。如果我删除 Session.Abandon() 方法,则 TempData 值将继续像以前一样工作。

最佳答案

Session.Abandon() 方法在请求结束时清除当前 session ,这就是它的设计目的。

参见http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

如果您想重定向到不同的操作,您确实需要像您所做的那样调用重定向。如果您使用Abandon(),请求将获得一个新的 session ID。

如果您想从 session 中删除某些内容,则需要使用 Session.RemoveSession.RemoveAll 方法(此外,Clear 也可以用于执行与 RemoveAll 相同的操作。这将通过以下方式完成:

Session.Remove(itemToRemove);

Session.RemoveAll()

通过使用这两个选项中的任何一个,您可以从 session 中删除部分或全部以前存储的数据,而不会真正导致在下一个请求时重新生成 session ID。

关于asp.net-mvc - 在设置 TempData ["myvalue"] = "foo"之前调用 MVC 3 Session.Abandon() 导致下一个 Controller 将 TempData 设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535511/

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