通过asp.net 4.0中的“EnableViewState”和“ViewStateMode”使
我正在尝试清理一个早期的ASP.NET WebForms站点,其中启用了ViewState。这是一个性能问题 – 巨大的视野导致明显的提交延迟。但是大多数的表单似乎并不需要ViewState,除了一些复杂的控件&表单数据。即使没有输入控件的窗体也会产生大的viewstates,因为我猜asp.net正在存储有关每个单一服务器控件的各种元数据。但是,可见性状态等都是在代码中控制的,所以我想我可以消除很多。
将EnableViewState =“false”添加到不需要它的每个控件(在页面中并以代码创建)非常繁琐,所以我试图在页面/控件级别禁用它,并且选择性地启用它需要的东西(是的,我意识到这是有风险的,但真正只有几个大的形式和几个模板,如果被解决将会有很大的不同)。 这是我没有得到的。 如果控件或页面的EnableViewState =“false”,它的<%..%>描述符,或在其父页面中创建的标记中,所有内容都会中断,因为在代码中添加的任何ViewState数据都不起作用。所以我似乎能够在控制级别启用它,但是将EnableViewState设置为false,以便在每个容器中进行包装器控件,然后在每个控件级别设置ViewStateMode = true(其中包含该值)。 当我没有得到的时候会发生什么: ViewStateMode = ViewStateMode.Enabled和 用于控制。内部控件是否可以使用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”显式设置)。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 如何访问所有querystring参数作为字典
- asp.net-mvc – MVC 2和MVC3有什么区别
- asp.net-mvc – System.Web.Mvc.dll发生了什么?
- ASP.NET MVC和IE缓存 – 操作响应头无效
- asp.net – 调用Web服务提供“无法连接到远程服务器错误”
- asp.net-web-api – 根据Web API请求设置JSON CamelCase
- asp.net-mvc – ASP.NET MVC:添加将DisplayName合并到自定
- 计算ASP.net/c#中的会话数
- asp.net-mvc – ASP.NET MVC Javascript ActionResult
- asp.net-core – 如何在Asp.net Core中使用soap web服务?
- 如何使用asp.net Web应用程序获取cookie?
- asp.net-mvc – ASP.NET Web-API不序列化readonl
- asp.net – 每次检索web.config值时,您是否将磁盘
- asp.net-mvc-4 – 重载Html.LabelFor以添加’后缀
- .net-4.0 – Asp.Net 4.0 CacheItemPolicy滑动到
- asp.net – 与WebAPI异步时保留HttpContext(中等
- 服务器端ASP.Net Ajax异常处理
- asp.net – 从源代码,aspx,xaml中提取可本地化的
- asp.net – 会话变量可以容纳的最大大小是多少?
- ASP.net上的URL路由,需要从url获取参数