首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net中的ViewState分块

asp.net中的ViewState分块
EN

Stack Overflow用户
提问于 2012-05-02 20:41:20
回答 2查看 5.8K关注 0票数 11

我一直听到"Viewstate Chunking“这个词。什么是Viewstate Chunking?

它是如何在ASP.NET页面上工作的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-06 03:27:50

当页面中的ViewState变得非常大时,这可能是一个问题,因为一些防火墙和代理将阻止访问包含巨大ViewState大小的页面。为此,ASP.NET引入了ViewState分块机制。因此,ASP.NET支持使用web.config部分中的MaxPageStateFieldLength属性将视图状态的单个隐藏字段拆分为多个字段。

当MaxPageStateFieldLength属性设置为正数时,发送到客户端浏览器的视图状态将被分解为多个隐藏字段。

将MaxPageStateFieldLength属性设置为负数(默认值)指示不应将视图状态字段分成多个块。将MaxPageStateFieldLength设置为较小的数字可能会导致性能较差。

之前的ViewState示例:

代码语言:javascript
复制
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3Jp
ZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" />

然后在web.config中设置:

代码语言:javascript
复制
<pages maxPageStateFieldLength="40">

下面是示例ViewState:

代码语言:javascript
复制
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT"value="3" />
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" />
<input type="hidden" name="__VIEWSTATE1"
id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" />
<input type="hidden" name="__VIEWSTATE2"
id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" /> 

希望能对你有所帮助!

票数 16
EN

Stack Overflow用户

发布于 2012-05-02 20:43:38

来自What's New in ASP.NET State Management - MSDN

如果视图状态数据量变得太大,视图状态分块将自动将数据拆分成块,并将数据放入多个隐藏表单字段中。

为什么需要视图状态分块?

这是一段来自ViewState Overivew - MSDN的实验

另一个重要的注意事项是,如果隐藏字段中的数据量变得很大,某些代理和防火墙将阻止访问包含它们的页面。由于最大数量可能随不同的防火墙和代理实现而变化,因此较大的隐藏字段可能会导致零星的问题。为了帮助避免此问题,如果存储在ViewState属性中的数据量超过了页的MaxPageStateFieldLength属性中指定的值,则该页将视图状态拆分为多个隐藏字段,以将每个字段的大小减小到防火墙拒绝的大小以下。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10413986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档