Tom*_*kel 5 asp.net-mvc asp.net-mvc-routing asp.net-mvc-3
我有一个控制器将逻辑,寻找:会话值
//checks value null etc.. for existing record in session memory.
Session["certnum"]
Run Code Online (Sandbox Code Playgroud)
然后在控制器中我决定有一个条件:
//is called to initiate a New Record that will be created.
Session.Abandon();
Run Code Online (Sandbox Code Playgroud)
但是在程序编码中是Session.Abandon(); 在创建TempData ["myobject"] ="foo"之前,在单步执行代码时,立即窗口中的TempData显示我的值,一切看起来都很好.然后重定向到另一个控制器:
return RedirectToAction("ChildInfo", "NewRecord");
Run Code Online (Sandbox Code Playgroud)
此ChildInfo方法不再具有TempData值...现在它为null.在设置TempData值之前调用了Session Abandon方法,不确定这是否是MVC Sessions的错误,但这对我来说毫无意义.如果我正在创建一个新的轻量级会话TempData,那么它应该持久保存到下一个控制器.如果我删除Session.Abandon()方法,那么TempData值将保持原样,就像之前一样.
Ber*_*ite 11
该Session.Abandon()方法在请求结束时清除当前会话,即它的设计目的.
请参阅http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx
如果要重定向到其他操作,则需要像调试一样调用重定向.如果您使用Abandon()该请求将获得新的会话ID.
如果你想从会话中删除某些内容,你需要使用Session.Remove或Session.RemoveAll方法(也Clear可以用来做同样的RemoveAll事情.这可以通过以下方式完成:
Session.Remove(itemToRemove);
Run Code Online (Sandbox Code Playgroud)
要么
Session.RemoveAll()
Run Code Online (Sandbox Code Playgroud)
通过使用这两个选项中的任何一个,您可以从会话中删除部分或全部先前存储的数据,而不会实际导致在下一个请求上重新生成会话ID.
| 归档时间: |
|
| 查看次数: |
5656 次 |
| 最近记录: |