加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

通过asp.net 4.0中的“EnableViewState”和“ViewStateMode”使

发布时间:2020-12-16 00:25:15 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试清理一个早期的ASP.NET WebForms站点,其中启用了ViewState。这是一个性能问题 – 巨大的视野导致明显的提交延迟。但是大多数的表单似乎并不需要ViewState,除了一些复杂的控件表单数据。即使没有输入控件的窗体也会产生大的viewstates,因为我猜a
我正在尝试清理一个早期的ASP.NET WebForms站点,其中启用了ViewState。这是一个性能问题 – 巨大的视野导致明显的提交延迟。但是大多数的表单似乎并不需要ViewState,除了一些复杂的控件&表单数据。即使没有输入控件的窗体也会产生大的viewstates,因为我猜asp.net正在存储有关每个单一服务器控件的各种元数据。但是,可见性状态等都是在代码中控制的,所以我想我可以消除很多。

将EnableViewState =“false”添加到不需要它的每个控件(在页面中并以代码创建)非常繁琐,所以我试图在页面/控件级别禁用它,并且选择性地启用它需要的东西(是的,我意识到这是有风险的,但真正只有几个大的形式和几个模板,如果被解决将会有很大的不同)。

这是我没有得到的。

如果控件或页面的EnableViewState =“false”,它的<%..%>描述符,或在其父页面中创建的标记中,所有内容都会中断,因为在代码中添加的任何ViewState数据都不起作用。所以我似乎能够在控制级别启用它,但是将EnableViewState设置为false,以便在每个容器中进行包装器控件,然后在每个控件级别设置ViewStateMode = true(其中包含该值)。

当我没有得到的时候会发生什么:

ViewStateMode = ViewStateMode.Enabled和
对于包含其他控件的控件,EnableViewState = false。

用于控制。内部控件是否可以使用ViewStateMode启用?基本上,哪个环节在冲突时有最后一个字?

对于每个容器,我希望能够禁用包装器控件中的所有内容,但仍然可以确保:

1)代码工作中的ViewState设置,和

2)默认情况下,所有控件的ViewState都被禁用

3)我可以选择启用ViewState进行子控制。

这似乎是混乱的。如果我在主页面中设置了一个设置为EnableViewState =“false”的包装器控件,但是将子控件设置为ViewStateMode =“Enabled”,则它将中断。根据MS,ViewStateMode应该取代任何外部的ViewState设置,但它似乎不起作用。

解决方法

根据 MSDN article on ViewStateMode,ViewStateMode仅在EnableViewState =“true”时有意义。要实现你想要的,你必须在控件上离开ViewStateMode =“Enabled”,然后将主要的子控件包装在具有ViewStateMode =“Disabled”的asp:占位符中。这样,您仍然可以在代码隐藏中操作ViewState,但是没有子控件将具有ViewState(除了您通过ViewStateMode =“Enabled”显式设置)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读