为了防止提交页面中的会话变量过期,我应该将会话变量分配给viewstate变量吗
本文关键字:变量 会话 我应该 分配 viewstate 过期 提交 | 更新日期: 2023-09-27 18:20:29
我有一个会话变量,用于存储数据表(根据用户希望添加/删除项(数据表中的数据项)的方式进行更改)。
在整个web应用程序的最后一页,我有一个提交页面,允许用户提交数据表中选定的项目。
因为我认为如果页面打开时间过长,会话变量可能会过期,为了防止过期变量引起错误,请在page_load函数的!IsPostBack我将会话变量分配给了一个视图状态变量(因此数据将存储在页面的视图状态中,不会过期)。
if(!IsPostBack){ ViewState["myDataTable"] = Session["myDataTable"]}
1) 这是标准做法吗?将会话变量分配给视图状态时是否存在任何含义/错误?
2) 调用ViewState["myDataTable"] = Session["myDataTable"]
后,可以执行Session["myDataTable"] = null
吗?
这实际上取决于数据的类型和大小。
关键是要记住,您需要将发送给客户端的任何内容视为泄露的数据。另一种说法是,如果你对用户有一个允许他们输入每一位数据的表格感到满意,那么只有这样才是可以的
总之,视图状态通常是签名的,但历史证明,遵循一般安全建议是个好主意。
至于大小,您需要关注每个请求交换的数据量。
最后,关于清除会话值,asp.net mvc对它所称的TempData做了类似的操作。它的使用场景:在非后期场景+中,当您不希望在查询字符串中时,将一些数据从一个页面传递到下一个页面。
是的,你可以这样做。但由于额外的开销,viewstate往往会减慢页面加载速度。如果你的数据集很小,那也可以,但如果它更大,那就寻找其他选择。
我怎么会建议不要使用这种方法[安全问题、速度慢等],而是使用一种方法,使会话在打开任何页面时不会过期??怎样使用jquery/ajax定期维护与服务器的连接。
如果您想进一步实现sql会话。这将是最好的。
希望这些信息能帮助你。