我有一个控制器将逻辑查找一个:会话值MVC 3 Session.Abandon()设定的TempData之前称为[“myvalue的”] =“foo”的使下一个控制器具有TempData的为空
//checks value null etc.. for existing record in session memory.
Session["certnum"]
该Session.Abandon()
//is called to initiate a New Record that will be created.
Session.Abandon();
然而在程序编码是;:
然后在控制器I已决定有一个条件,其中在创建TempData [“myobject”] =“foo”之前出现,并且在单步执行代码时,立即窗口中的TempData显示我的值,并且都很好。然后重定向到另一个控制器:
return RedirectToAction("ChildInfo", "NewRecord");
此ChildInfo方法不再具有TempData值...现在它为空。会话放弃方法在TempData值被设置之前被调用,并不确定这是否是MVC会话中的错误,但这对我来说意义不大。如果我正在创建一个新的轻量级会话TempData,那么它应该持续到下一个控制器。如果我删除Session.Abandon()方法,那么TempData值会像以前一样继续工作。
这里重要的是TempData依赖于会话。会话消失了,因此TempData消失了。 –
@Adam是的,我意识到无论如何我在创建一个TempData值之前调用Session.Abandon(),但我仍然处于控制器的同一个actionresult方法中,但是,对我而言,这似乎只是一种疯狂。 –
为什么它会疯了?您正在重置tempdata所需的对象。这就像说“我删除表中的所有行,但我不明白为什么在下一个请求中,我要请求的行不在那里?” :) –