【问题标题】:Large ViewState value in ASP.NETASP.NET 中的大 ViewState 值
【发布时间】:2009-07-31 07:26:05
【问题描述】:

我正在 ASP.NET 2.0 中构建一个应用程序,视图状态的价值是巨大的:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTExNz...

该值包含 535,000 个字符。这是正常的吗?我怎样才能让它变小?

【问题讨论】:

    标签: c# asp.net viewstate


    【解决方案1】:

    查看您的网页的enabling ASP.NET tracing - 这将告诉您哪些控件在视图状态下存储了多少。然后,您可以去禁用您知道未使用的控件的视图状态。

    【讨论】:

    • 感谢您的提示。问题是从数据库填充的下拉列表。不知道为什么它有一个巨大的视图状态。
    • 我推荐无视图状态的编程方式;仅在表单和/或控件需要时启用和使用。在这种情况下,您可能需要评估此特定控件是否需要视图状态。如果不确定,请在控制级别禁用它,看看有什么问题,然后重新启用它。 Viewstate 大小可能是控件实际数据大小的倍数,因此您应该谨慎地填充数据 - 仅包含需要的内容。
    【解决方案2】:

    ViewState 会让你变得丑陋。基本上我会说问题在于 ViewState 默认情况下在所有内容上都启用,并且很多东西不需要它。最基本的例子是 Label 对象。

    尝试禁用您认为不必要的 ViewState(EnableViewState 是您要查找的属性)。

    【讨论】:

    • 它取决于每页的对象还是整个应用程序中的对象?
    • 这将取决于该页面中的对象。
    • 可能值得添加一个示例:&lt;asp:Label ID="productName" EnableViewState="false" Text="[Product Name]" runat="server" /&gt;
    【解决方案3】:

    如果您编写一些代码,您可以将视图状态存储在您的服务器中,而不是通过网络发送它以进行往返。您也可以压缩它以节省空间/带宽和加载时间。

    Here 是我前段时间写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2012-03-24
      • 2011-04-01
      • 2012-05-11
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多