asp.net - 服务器端 View 状态可以解决 ASP.NET 的最大问题之一吗?

标签 asp.net viewstate

我读过一些关于 ASP.NET MVC 是否值得从“常规”ASP.NET 迁移的文章。我所看到的使用 MVC 的最大原因之一是不必使用 Viewstates。

但是,可以通过将服务器上的 View 状态信息存储为 this article 来消除 View 状态。显示。我已经在示例项目中尝试过它,它效果很好,据我所知是完全透明的,并且非常容易实现。

那么,问题在哪里呢?我预计它确实会给服务器带来稍高的负载,但它真的有那么糟糕吗?如果不是,为什么没有更多的人使用这种方法而不是提示 View 状态?

最佳答案

View 状态的唯一问题是滥用它。这很容易发生,因为默认设置是全部打开。你甚至不能在页面上默认将其全部关闭,并有选择地打开特定控件(他们将在 4.0 上添加对此的支持)。您将看到很少有带有 viewstate=false 的代码,并且通过信息列表,它可以很快变大。

甚至有一些第三方控件严重滥用它。我必须帮助找出为什么一个页面非常慢(因为它甚至不起作用),结果下载的信息量很大,原因是 View 状态是内容大小的 10+ 倍(真的)并且它是一个第三方控件,喜欢存储您交给它的所有内容(这变得非常丑陋,因为它被交给了对象的层次结构)。

所以真正的问题不是 View 状态,而是它的大小。如果您已经遇到大 View 状态的问题(正常大,不是上述极端情况),那么将其移动到服务器上的 session 意味着您将存储大量信息。这将问题从一个地方转移到另一个地方,也许会减轻其一些影响,但它并没有解决真正的问题,存储了太多不需要的状态(因为开发人员这样做或某些第三方行为不当)。

也就是说,我认为我不会将其称为常规 asp.net 方法的唯一主要问题。不要将此视为“不要使用它进行开发”,而更像是“如果您要在其上进行开发,请充分了解它”。我经常使用常规的 asp.net,它可以工作并且非常好。如果我现在开始,我想我会选择 ASP.NET MVC,因为我认为常规的 ASP.NET 需要开发人员做更多的工作才能做到正确。

关于asp.net - 服务器端 View 状态可以解决 ASP.NET 的最大问题之一吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640300/

相关文章:

c# - Linq to SQL 搜索

asp.net - View 状态已禁用 - 下拉框不返回值

asp.net - 在 ASP.Net 中,我有时会收到以下错误 - View 状态验证失败。原因: The viewstate supplied failed integrity check

c# - 当我使用 VS 2010 SP1 Beta 打开一个新项目时,ASP.NET MVC 3 挂起

asp.net - 对 Azure 媒体服务中的 2 个作业任务使用相同的输出 Assets

Javascript 函数不显示值或将它们写入文本框

asp.net - 使用 ASP.Net 缓存客户端图像

javascript - 从回发响应更新 View 状态

python - 在 Python 3 中使用 UTF-8 解码 VIEWSTATE 字符串

asp.net 用什么代替 viewstate