【问题标题】:disabling viewstate of whole page禁用整个页面的视图状态
【发布时间】:2010-12-31 13:06:31
【问题描述】:

是否可以一次使整个页面的视图状态为假,包括所有控件。我的意思是我不想为所有控件设置 enableviewstate="false"。在我拥有的 aspx 页面的页面指令中使 enableviewstate="false" 但仍然启用了所有控件的视图状态..

EnableViewState="False" 实际上在 Page 指令中起作用。

【问题讨论】:

  • 为什么你认为它仍然启用?
  • 您是否将Browser Stored Values 与Values Stored Values 混淆了?在您的页面中放置TextBox 并检查TextChanged 事件是否在您更改其值时触发。如果没有,ViewState 将关闭。

标签: asp.net vb.net


【解决方案1】:

您是否尝试在 web.config 中将 enableViewState 设置为 false?像这样:

<pages enableViewState="false" />

【讨论】:

    【解决方案2】:

    在 ASP.Net 4.0 中,其中一项新功能是对页面及其控件的 ViewState 进行更多控制。

    在 ASP.Net 3.5 和更早版本中,如果显式设置页面的 ViewState,则 ChildControls 的 ViewState 将被忽略。因此,如果您为 UserControl 设置 EnableViewState="false",如果 Page.EnableViewState 设置为 true,它仍将使用 ViewState。

    ASP.Net 4.0 引入了一个新的 ViewStateMode- 具有 3 个值的属性:Enabled、Disabled 和 Inherit

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" ViewStateMode="Disabled" Inherits="_Default" %>
    

    因此,如果您将子控件的 ViewStateMode 设置为 Inherit,它们将继承页面的行为。如果您将其设置为启用或禁用,他们会按照您的意愿行事。

    查看更多信息:http://www.dotnetcurry.com/ShowArticle.aspx?ID=478&AspxAutoDetectCookieSupport=1

    即使它没有直接回答您的问题,为什么页面中的 EnableViewState 值会被忽略,但它可能会向您展示如何在 ASP.Net 4.0 中执行此操作或在哪里查找问题。也许您将 EnableViewState="true" 设置在更高级别,例如 MasterPage?

    【讨论】:

      【解决方案3】:

      This 是(有点过时的)但仍然非常相关的关于 ViewState 及其工作原理的文章。

      Here 是 MSDN 上的另一篇好文章。

      我建议您在确定ViewState 没有关闭之前阅读并理解这两点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多