哪个最好使用ViewState或hiddenfield
-
05-07-2019 - |
题
我有一个页面,我想在后面保留对象之间的对象值。 我正在考虑两种方法来维护对象的价值
- 将值存储在View Sate
中- 将值存储在隐藏字段中
醇>
这是基于性能的最佳选择
解决方案
如果 不 需要在客户端脚本中引用它,请查看状态。如果你这样做是一个隐藏的字段。
另外考虑如果数据是敏感的,默认情况下Viewstate是加密的,而默认情况下,隐藏字段将其存储为知道如何查看源的任何人都可以看到的纯文本。
修改强>
Per @Andrew Hare关于他自己答案的说明,我正在编辑这个。值得注意的是,这是一个非常重要的区别。我讨厌有人认为他们是“安全的”。根据我的疏忽使用Viewstate。
默认情况下,Viewstate未加密,它存储为Base-64编码。它可以很容易地解码,因此使用Viewstate是因为它默认是加密的无效。它比纯文本更好,但对任何有能力谷歌“解密Viewstate”的人都没有。或“解码视图状态”。
所以不要依赖Viewstate来保护客户端代码中的隐藏信息。
此处的文章介绍了如何对其进行加密正常。 (但也警告性能问题)。
其他提示
由于ViewState本身存储在隐藏的输入中,因此并不重要。使用哪个更容易。如果由我决定,我会选择ViewState,因为ASP.NET运行时将为您处理对象的序列化和反序列化。
我喜欢ViewState - 它更难被黑客攻击 - 一个讨厌的人可以轻易地将您的页面提交给隐藏字段中的错误数据
您想将其存储在视图状态中。隐藏字段可以在浏览器上更新,因为它们用于存储可以在客户端操作的信息。视图状态将由asp.net验证以防止篡改,您必须自己使用隐藏字段。
不隶属于 StackOverflow