我有一个页面,我想在回发之间维护对象的值。我在想两种方法来保持对象的价值
- 将值存储在查看状态中
- 将值存储在隐藏字段中
这是基于性能使用的最佳选择
我有一个页面,我想在回发之间维护对象的值。我在想两种方法来保持对象的价值
- 将值存储在查看状态中
- 将值存储在隐藏字段中
这是基于性能使用的最佳选择
Viewstate 如果您不需要在客户端脚本中引用它。如果您这样做,则为隐藏字段。
还要考虑,如果数据是敏感的,则默认情况下会加密 Viewstate,而默认情况下,隐藏字段将其存储为任何知道如何查看源代码的人都可以看到的纯文本。
编辑
根据@Andrew Hare 关于他自己答案的注释,我正在编辑这个。这是一个足够重要的区别。我不希望有人根据我的疏忽认为他们使用 Viewstate 是“安全的”。
默认情况下,Viewstate 未加密,它以 Base-64 编码存储。它可以很容易地解码,因此使用 Viewstate 因为它默认加密是无效的。它比纯文本更好,但不适用于任何能够谷歌“解密视图状态”或“解码视图状态”的人。
因此,不要依赖 Viewstate 来保护您在客户端代码中的隐藏信息。
这里的一篇文章讲述了如何正确加密它。(但也警告性能问题)。
这并不重要,因为 ViewState 本身存储在隐藏的输入中。使用对您来说更容易的一个。如果由我决定,我会选择 ViewState,因为 ASP.NET 运行时将为您处理对象的序列化和反序列化。
我喜欢 ViewState - 它更难破解 - 一个讨厌的人可以轻松地将您的页面提交给您,并且在您的隐藏字段中包含错误数据
您想将其存储在视图状态中。隐藏字段可以在浏览器上更新,因为它们旨在存储可以在客户端操作的信息。视图状态将由 asp.net 验证以防篡改,您必须自己对隐藏字段执行此操作。