哪个最好使用ViewState或hiddenfield

时间:2009-10-22 17:06:24

标签: c# asp.net viewstate hiddenfield

我有一个页面,我想在后面保留对象之间的对象值。 我正在考虑两种方法来维护对象的价值

  
      
  1. 将值存储在View Sate
  2. 中   
  3. 将值存储在隐藏字段中
  4.   

这是基于性能的最佳选择

4 个答案:

答案 0 :(得分:10)

如果 需要在客户端脚本中引用它,请查看状态。如果你这样做是一个隐藏的字段。

另外考虑如果数据是敏感的,默认情况下Viewstate是加密的,而默认情况下,隐藏字段将其存储为知道如何查看源的任何人都可以看到的纯文本。

修改

Per @Andrew Hare关于他自己答案的说明,我正在编辑这个。值得注意的是,这是一个非常重要的区别。根据我的疏忽,我讨厌有人认为他们使用Viewstate是“安全的”。

默认情况下,Viewstate未加密,它存储为Base-64编码。它可以很容易地解码,因此使用Viewstate是因为它默认是加密的无效。它比普通文本更好,但对任何能够谷歌“解密Viewstate”或“解码Viewstate”的人都没有。

所以不要依赖Viewstate来保护客户端代码中的隐藏信息。

文章here讲述了如何正确加密它。 (但也警告性能问题)。

答案 1 :(得分:2)

由于ViewState本身存储在隐藏的输入中,因此并不重要。使用哪个更容易。如果由我决定,我会选择ViewState,因为ASP.NET运行时将为您处理对象的序列化和反序列化。

答案 2 :(得分:0)

我喜欢ViewState - 它更难被黑客攻击 - 一个讨厌的人可以轻易地将您的页面提交给隐藏字段中的错误数据

答案 3 :(得分:0)

您想将其存储在视图状态中。隐藏字段可以在浏览器上更新,因为它们用于存储可以在客户端操作的信息。视图状态将由asp.net验证以防止篡改,您必须自己使用隐藏字段。