【发布时间】:2011-06-13 23:22:30
【问题描述】:
使用时有什么区别
- 隐藏字段与视图状态?
- 什么时候使用每一个?
- 哪一种更安全?
- 哪个性能更好?
- 有哪些替代方案?
【问题讨论】:
-
两者都不是真的比彼此更好或更差。你要存储什么?
-
有时(产品的ID),有时是数据表等等..
标签: asp.net ajax performance security viewstate
使用时有什么区别
【问题讨论】:
标签: asp.net ajax performance security viewstate
ViewState 存储在一个隐藏字段中,它包含有关整个页面的信息。它也可以被加密。因为在执行回发时视图状态总是发送到代码隐藏,所以它非常实用,因为您总是可以获取值。缺点是如果您开始在其中放入大量信息,它可能会变得非常大,并且性能可能会开始受到影响。例如,在某些 AJAX 请求中,您只想向服务器发送一些小信息,如果您使用了 UpdatePanel,则将发送整个 ViewState,其中包含不必要的信息。
【讨论】:
可以在页面 HTML 源代码中查看隐藏字段,而 ViewState 至少可以说是经过混淆处理的,并且根据您的 .net 版本,可以进行不同程度的加密。
隐藏字段在性能上会更好,但不提供安全性,如果可以操纵发布数据,更改 ViewState 会容易得多。
会话变量是这些变量的一个很好的替代品。
【讨论】:
ViewState 内部使用隐藏字段。由ASP.NET Engine管理,默认加密。
另一方面,通过隐藏字段控制,您可以管理其中存储的内容。默认情况下,它没有加密。
性能方面,两者是相同的。但是,我觉得ViewState 更安全。 ASP.NET 维护其哈希值以防止/识别任何对其客户端的篡改。
你也可以使用 session 来存储数据。
【讨论】: