gpt4 book ai didi

c# - 将DataTable赋值给ViewState是个好办法?

转载 作者:太空狗 更新时间:2023-10-30 00:25:08 25 4
gpt4 key购买 nike

我从数据库中获取数据表并分配给 ViewState,如下所示:因为我不想每次都访问数据库。

DataTable dt = GetDataTable();
ViewState["dtTable"] = dt;

GetDataTable() 是一种方法,它从数据库中检索 1000 条记录。这是处理此问题的最佳方法还是哪种方法最好?

最佳答案

首先要做的事情:撇开解释不谈,这在很大程度上仍然取决于您的要求、环境设置......

View 状态存储在呈现为 <input /> 的隐藏字段中发送到浏览器的最终 HTML 中的标记。当用户启动回发(单击按钮等)时,数据将作为提交的表单数据的一部分发送回服务器。

如果您在 ViewState 中存储了大量数据,那么当用户尝试下载页面时您将不得不受到惩罚,因为所有这些数据都将成为您的 HTML 的一部分,并且当用户尝试提交表单时也是如此,因为此数据将再次发送回服务器。

另外,ViewState很容易丢失。只要用户提交表单,它就会被保留。如果用户单击指向另一个页面的超链接,则不会提交表单,因此包含在 ViewState 中的数据将丢失。

如果数据比较小,建议使用ViewState。

如果我们考虑安全选项,ViewState 数据以 base64 编码,可以轻松解码。这是黑客入侵网站的经典示例,因此请仔细检查您到底存储了哪些数据。虽然您可以通过设置 EnableViewStateMac 来解决这个问题。为真。

对于大量数据,Session 是一个不错的选择。如果您能够检测到任何用户何时完成了特定数据 block ,请将 Session 变量设置为 null,以抵消内存开销。您不能总是这样做,但是 Session 也会过期并且内存会自动回收。降低 session 超时也有帮助,但需要根据要求进行设置。

此外,Session 中的数据实际上在页面加载之间存在于 Web 服务器上。这有助于保持较小的页面大小,它只需要使用 session ID。

最后一个选项是使用 Caching.Check MSDN here for the best practices on Caching.

关于c# - 将DataTable赋值给ViewState是个好办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18821957/

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