将 DataTable 分配给 ViewState 是持久数据的好方法吗?

2023-11-25

我从数据库获取一个 DataTable 并分配给 ViewState,如下所示,因为我不想每次都访问我的数据库,只想检查 DataTable 以进行后续查找。

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

GetDataTable()是一种从数据库检索 1000 条记录的方法。

这是最好的方法还是有更好的方法来处理这个问题?


有几种选择。使用哪一种最好取决于您的要求、环境设置等。

视图状态:

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

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

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

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

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


Session

对于大量数据、Session是一个不错的选择。如果您能够检测到任何用户何时完成特定数据块,请将 Session 变量设置为 null,以解决内存开销问题。如果不能一直这样做,Session也会过期,内存会自动回收。降低会话超时也有帮助,但在将其设置为干扰正常站点使用的值时要小心。

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


Caching

最后一个选择是使用缓存。查看 Microsoft Learn 文章ASP.NET 缓存:技术和最佳实践史蒂文·A·史密斯 (Steven A. Smith) 撰写,了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 DataTable 分配给 ViewState 是持久数据的好方法吗? 的相关文章

  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • strlen() 编译时优化

    前几天我发现你可以找到编译时strlen使用这样的东西 template
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 在Page_Load之前处理事件

    我有一个 ASP NET 网页 其中包含大量在页面的 Page Load 事件中处理的代码 我在页面上还有一个下拉框 应该使用新值重新加载页面 但我想在处理整个页面加载代码之前获取这个新值 我正在尝试了解 ASP NET 页面生命周期 我应
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何使用 jQuery 过滤 DropDownList 中的选项

    我有 2 个 DropDownList 第一个 DropDownList 有 4 个选项 第二个 DropDownList 有 20 个选项 我想要一个选项value 1在第一个 DropDownList 中选择我在第二个 DropDown
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配

随机推荐

  • 狮身人面像和“你的意思是……?”建议想法。它会起作用吗?

    我正在尝试想出最快的方法来提出搜索建议 起初我认为 Levenstein UDF 函数与 mysql 表相结合就可以完成这项工作 但是使用 levenshtein mysql 必须遍历表中的每一行 大量的单词 这会使查询非常慢 现在我最近安
  • 如何用等角透视进行渲染? [复制]

    这个问题在这里已经有答案了 可能的重复 使用opengl进行真正的等角投影 我想使用 Blender3d 使用的相同等距渲染进行渲染 我该怎么做 是否可以仅调用 glMultMatrix 我尝试谷歌搜索 但找不到任何可以导致这种渲染模式的工
  • Kotlin 中默认构造函数中的两个附加类型?

    自从我一直在使用kotlin 反射为了调用我的默认值和声明的构造函数 我看到了第二个不同的构造函数 我意识到两个不同的领域int arg3 and kotlin jvm internal DefaultConstructorMarker a
  • Visual Studio 2015 中的 TFS 生成资源管理器在哪里?

    我在 Windows 8 上运行 Visual Studio Enterprise 2015 RTM 在 Visual Studio 2013 中 构建资源管理器位于团队资源管理器 gt 构建 gt 操作 gt 管理队列中 Visual S
  • Typescript 泛型中对接口成员的约束

    我有一个方法 应该接受任何对象 只要它的所有字段都是字符串或数字 我做了这个 它非常适合鸭子打字 static interpolateParams route string params key string string number s
  • 一个很好的 C 随机数生成器

    我需要一个好的随机数生成器来用于我用 C 编写的程序 如果您感兴趣的话 它是一个分形火焰生成器 尽管我过去使用相同的算法取得了成功 但我的图像仍然非常粗糙 我最终意识到 区别在于我使用的随机数生成器 令人难以置信的是 它产生了巨大的变化 我
  • Linq 查询适用于 null 但不适用于 int?在 where 子句中

    我有一个像 简化的 的 linq 查询函数 public IList
  • Windows Phone 8.1 位置跟踪

    我想实现一个将设备位置持续发送到网络服务的应用程序 查看文档 我发现了 Geolocation 类和一些讨论位置跟踪的文章 如何持续跟踪 Windows Phone 8 手机的位置 如何在 Windows Phone 8 后台运行位置跟踪应
  • java中如何调整文本大小

    我发现在 Photoshop 中 只需拖动文本即可轻松调整文本大小 我们如何在 Java 中做同样的事情 关于如何在java中调整文本大小有什么想法吗 添加了在 Photoshop 中调整大小的字母 A 的快照 请让我知道这段代码有什么问题
  • 如何使用 XPath 获取属性的值

    我一直在使用 Selenium WebDriver 进行测试 并且一直在寻找 XPath 代码来获取 HTML 元素的属性值 作为回归测试的一部分 但我找不到一个好的答案 这是我的示例 html 元素 div class firstdiv
  • 如何实现android视频播放器全屏播放

    我已经实现了android视频播放器 但我不需要像这样我需要什么意思当我打开活动时我需要支付视频半屏在中心当我点击按钮全屏按钮然后我需要全屏支付 如何实现它帮助我 视频播放器活动 public class VideoPlayerActivi
  • 如何在intellij idea编辑器中删除顶行面包屑?

    我在弄清楚 IntelliJ Idea Community Edition 15 中的此显示栏时遇到问题 有谁知道这是什么和 或如何将其关闭 它被称为当前代码位置的面包屑菜单 例如 在您的图像中 您处于类 Display gt 方法 Dis
  • 通过 JDBC 集成 Spark SQL 和 Apache Drill

    我想根据使用 Apache Drill 对 CSV 数据 在 HDFS 上 执行查询的结果创建 Spark SQL DataFrame 我成功配置了 Spark SQL 使其通过 JDBC 连接到 Drill Map
  • 如何将 JSON 格式的数据从 WebView 传递到 HTML 页面

    我正在尝试将 JSON 格式的数据从 Android WebView 传递到 HTML 页面 但是 每当我尝试解析原始 JSON 数据时 应用程序就会崩溃 我希望其格式为 key data 我的应用程序的目标是解释此 JSON 数据 将其形
  • 如何检测 Angular2 中的变量变化

    我有以下配置对象 它是在构造函数运行之前设置的 config Object onSlideChangeEnd function slide any this currentSlideIndex slide activeIndex 我想通知服
  • 如何使用 C# 获取 IIS 中网站的“浏览”URL?

    假设我在 IIS 中有 站点名称 网站 我可以通过以下方式访问它的大部分功能服务器管理器我的 C 代码中的类 我似乎不知道如何获取它的 浏览 URL 就像我在下面的屏幕截图中所示的那样 如果我进入 管理网站 gt 浏览 IIS管理器 它将使
  • 在 ASP.NET MVC 中将数据传递到母版页

    在不违反 MVC 规则的情况下将数据传递到母版页 使用 ASP NET MVC 的方法是什么 就我个人而言 我更喜欢编写传递给所有视图的抽象控制器 基本控制器 或基类 如果您希望视图具有强类型视图数据类 这可能适合您 其他解决方案可能更多c
  • Google AdMob“我们将尝试不再展示该广告”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在使用 AdMob 在 Android 应用中展示广告 我已经整合了所有步骤 并且收到了广告 但突然它开始显示 我们会尽量不再展示该广告 为什么会出现这种情况 None
  • 范围运算符从最大到最小递减:10..1 [重复]

    这个问题在这里已经有答案了 Perl 有一个范围运算符 当在foreach循环 不创建临时数组 foreach 1 1 000 000 code 如果第一个整数小于第二个整数 则不运行迭代 foreach 1 000 000 1 code
  • 将 DataTable 分配给 ViewState 是持久数据的好方法吗?

    我从数据库获取一个 DataTable 并分配给 ViewState 如下所示 因为我不想每次都访问我的数据库 只想检查 DataTable 以进行后续查找 DataTable dt GetDataTable ViewState dtTab