为了防止提交页面中的会话变量过期,我应该将会话变量分配给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吗?

为了防止提交页面中的会话变量过期,我应该将会话变量分配给viewstate变量吗

这实际上取决于数据的类型和大小。

关键是要记住,您需要将发送给客户端的任何内容视为泄露的数据。另一种说法是,如果你对用户有一个允许他们输入每一位数据的表格感到满意,那么只有这样才是可以的

总之,视图状态通常是签名的,但历史证明,遵循一般安全建议是个好主意。

至于大小,您需要关注每个请求交换的数据量。

最后,关于清除会话值,asp.net mvc对它所称的TempData做了类似的操作。它的使用场景:在非后期场景+中,当您不希望在查询字符串中时,将一些数据从一个页面传递到下一个页面。

是的,你可以这样做。但由于额外的开销,viewstate往往会减慢页面加载速度。如果你的数据集很小,那也可以,但如果它更大,那就寻找其他选择。

我怎么会建议不要使用这种方法[安全问题、速度慢等],而是使用一种方法,使会话在打开任何页面时不会过期??怎样使用jquery/ajax定期维护与服务器的连接。

如果您想进一步实现sql会话。这将是最好的。

希望这些信息能帮助你。