如何在asp.net中制作webforms而不使用viewstate

如何在asp.net中制作webforms而不使用viewstate,asp.net,viewstate,Asp.net,Viewstate,我需要创建一个大型网站,但在asp.net中使用web窗体时,会出现viewstate问题。因为viewstate使网站非常沉重。 我们是否有其他选择,我不想使用mvc。要快速修复,您可以非常轻松地在会话中存储viewstate。有数百篇关于这个主题的指导性文章 但从长远来看,学习如何更有效地使用viewstate对您有利。可以在Web应用程序、页面或Web控件级别使用=“false”(或=“disabled”)属性禁用viewstate,并且viewstate数据不会存储在HTML中 您可以将

我需要创建一个大型网站,但在asp.net中使用web窗体时,会出现viewstate问题。因为viewstate使网站非常沉重。
我们是否有其他选择,我不想使用mvc。

要快速修复,您可以非常轻松地在会话中存储viewstate。有数百篇关于这个主题的指导性文章


但从长远来看,学习如何更有效地使用viewstate对您有利。

可以在Web应用程序、页面或Web控件级别使用=“false”(或=“disabled”)属性禁用viewstate,并且viewstate数据不会存储在HTML中

您可以将数据保存在(每个用户都是唯一的)或(所有用户都是相同的)

希望这有帮助

编辑

将数据保存到会话:

Session["YourKeyName"] = "Object data";
从会话获取保存的数据:

object o = Session["YourKeyName"] as object; // Where object can be any type
将数据保存到缓存:

Cache["YourAnotherKeyName"] = "Object data";
从缓存中获取保存的数据:

object o = Cache["YourAnotherKeyName"] as object; // Where object can be any type
这里有几个“修复”

  • 在会话中存储viewstate。就个人而言,我不喜欢这样,但这主要是因为我不喜欢将会话用于任何事情

  • 跨多个隐藏表单字段拆分viewstate。它被储存在一块巨大的田地里。这可以在web.config中通过将设置为合理的值(如1024)来处理

  • 浏览您的页面并修复那些严重影响viewstate的页面。最大的问题是网格和其他重复视图,尤其是在使用内置分页功能时。基本上,去掉各种标准的.net控件,用不尝试将整个数据集发送到客户端的控件替换它们

  • 完全禁用viewstate。虽然我喜欢这样,但这通常是无法实现的。特别是当您使用的控件完全依赖于它时(比如内置分页的网格…)


  • 最快的“修复”是上面的第2个。这将允许您解决某些safari版本的问题。本质上,您最大的问题是各种浏览器对单个表单字段中可以显示的数据量有限制

    如果您不想使用ViewState,但想保持控件的状态,则可以使用会话或在每次发布到服务器后手动为控件赋值。对于较重的控件,始终可以禁用ViewState,对于较轻的控件,始终可以启用ViewState


    祝你好运

    有没有很好的选择…我的意思是,在mvc中,他们如何摆脱viewstate…好的,当我的会话很重时,它会在导航其他页面时生效…或者它会有任何影响会话,默认情况下,存储在服务器端(内存中)。所以读写速度非常快。会话存储在客户端或服务器端,那么缓存呢…哪边请阅读本文和本文