【问题标题】:How to disable ControlState in ASP.NET?如何在 ASP.NET 中禁用 ControlState?
【发布时间】:2010-06-24 17:57:17
【问题描述】:

如何在 ASP.NET 网站应用程序中完全禁用 ControlState 以摆脱每个页面上的 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/ACBDEFGH...XYZ=" />

在寻找解决方案时,我只发现meaningless answersControlStateViewState 之间没有区别,或者回复saying that “我们无法禁用控制状态”。第二个假设似乎是错误的,因为 StackOverflow 页面没有 ViewState 隐藏字段。

【问题讨论】:

  • 堆栈溢出是用 ASP.NET MVC 而不是 ASP.NET WebForms 编写的,MVC 不使用 ViewState 或 ControlStates。 WebFroms 和 MVC 是写在 ASP.NET 之上的不同 Web 框架。

标签: asp.net controls viewstate


【解决方案1】:

创建自定义类

 public class PageBase:Page
    {

        protected override void SavePageStateToPersistenceMedium(object state)
        {
                // Do nothing here
        }    

    }

然后将您的页面更改为从 PageBase 继承

    public partial class Test : PageBase
    {
    }

【讨论】:

  • 这将消除隐藏字段,但它们都将完全为空。绝对有办法摆脱隐藏元素,这正是我可以快速提出的
  • 谢谢,没关系。我可以摆脱标签本身,但这并不重要。
【解决方案2】:

是的,控制状态是一种即使视图状态被禁用也能正常工作的机制,因此,它是 ASP.NET Web 表单的永久固定装置。 MVC 不会有这个,因为它没有利用视图状态或控制状态机制。

HTH。

【讨论】:

  • 所以引用 “我们不能禁用控制状态” 对于非 MVC 应用程序来说是完全正确的吗?即使不使用 ASP.NET 控件,也无法摆脱ControlState
  • 我在任何地方都没有看到任何说你可以的东西,因为那是它的意图......你可能想试试@Shrage 的把戏......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多