【问题标题】:Running ASP.NET without viewstate turned on在没有打开视图状态的情况下运行 ASP.NET
【发布时间】:2009-03-02 00:36:10
【问题描述】:

我们即将开始重建我们的一个 ASP.NET 项目,我想尝试在不启用 viestate(在 web.config 中禁用)的情况下开发它。

我知道 viewstate 的优点和缺点,一般来说,它与控制状态相比跟踪了什么,但是我想知道:

  1. 原理开发流程有哪些区别?即,您的 Page_Load 等结构有何不同?

  2. 标准 ASP.NET 控件中是否有任何功能在不打开视图状态的情况下真的无法工作?

另外,有没有关于使用和不使用 VS 的工作流程差异的详细文章?

【问题讨论】:

    标签: asp.net performance viewstate


    【解决方案1】:

    如果您反对视图状态 - 为什么不尝试使用 MVC 框架?这可能更容易调整。

    【讨论】:

    • 这绝对是一种选择,但不幸的是当时我们错过了。如果我们今天重新开始,那么 MVC 肯定是要走的路。
    【解决方案2】:

    大多数控件(如 TextBoxes 和 DropDownLists)在没有视图状态的情况下也能正常运行。

    我不知道任何开发过程问题,除了通过代码创建或修改的任何控件或属性在没有视图状态的情况下不会持续存在,因此您必须在回发时重新创建/修改它们。

    我有一些带有大视图状态的非常大的页面。我做了一个实验来禁用整个项目的视图状态,并且发现(起初)没有明显的功能损失。然后在测试中出现了一些小问题,所以我们恢复了它。但是我们的 300 页 Web 应用程序在没有视图状态的情况下可能有 99% 的功能。我们遇到的问题集中在数据网格上——主要是分页,动态创建控件和其他由代码修改的东西,因此没有视图状态就不会持久。

    这是一篇关于 Viewstate 的非常好的文章:

    http://msdn.microsoft.com/en-us/library/ms972976.aspx

    【讨论】:

      【解决方案3】:

      我禁用了我的项目的视图状态。我使用 scatter/gather 方法从 aspx 页面向/从我的数据访问对象填充和获取值。它比使用视图状态更清洁和简单。

      【讨论】:

      • 感谢 ocdecio,分散/收集方法是什么意思?您是否使用 ASP.NET 页面/事件模型的其余部分?
      • 是的,我使用的是普通的页面事件模型。收集 = 将页面元素中的值收集到我的对象中; scatter = 使用我的对象中的值填充页面元素。
      猜你喜欢
      • 2012-09-21
      • 1970-01-01
      • 2014-10-28
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多