代码之家  ›  专栏  ›  技术社区  ›  Vijjendra

哪一个最好使用viewstate或hiddenfield

  •  9
  • Vijjendra  · 技术社区  · 16 年前

    我有一个页面,在这个页面中,我想在回发之间维护对象的值。 我想用两种方法来保持物体的价值

    1. 将值存储在视图状态中
    2. 将值存储在隐藏字段中

    根据性能,哪一个是最好的选择

    4 回复  |  直到 16 年前
        1
  •  10
  •   David    16 年前

    如果您 不要 需要在客户端脚本中引用它。一个隐藏的字段。

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

    编辑

    根据安德鲁·黑尔自己的回答,我正在编辑这个。这是一个非常重要的区别。我讨厌有人认为他们在我的监督下使用视图状态是“安全的”。

    默认情况下,viewstate不加密,它存储为base-64编码。它可以很容易地解码,因此使用viewstate是无效的,因为它是默认加密的。它比纯文本更好,但对任何有能力谷歌“解密视图状态”或“解码视图状态”的人来说都不行。

    所以不要依赖于视图状态来保护客户端代码中的隐藏信息。

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

        2
  •  2
  •   Andrew Hare    16 年前

    实际上并不重要,因为viewstate本身存储在一个隐藏的输入中。用对你来说比较容易的。如果由我决定,我将选择ViewState,因为ASP.NET运行时将为您处理对象的序列化和反序列化。

        3
  •  0
  •   Ray    16 年前

    我喜欢viewstate——这很难破解——一个讨厌的人可以很容易地将你的页面提交给你,在你的隐藏字段中有坏数据。

        4
  •  0
  •   kemiller2002    16 年前

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

    推荐文章