Minimizing viewstate- confundido por `EnableViewState` y` ViewStateMode` en asp.net 4.0

Estoy tratando de limpiar un sitio ASP.NET WebForms anterior que tiene ViewState habilitado en todas partes. Este es un problema de rendimiento: las enormes vistas generan retrasos notables en el envío. Pero la mayoría de los formularios realmente no parecen necesitar ViewState excepto algunos controles complejos y datos de formularios. Sin embargo, incluso los formularios sin controles de entrada generan grandes vistas porque supongo que asp.net está almacenando todo tipo de metadatos sobre cada control de servidor. Pero el estado de visibilidad, etc., está todo controlado en el código, así que creo que puedo eliminar mucho.

Es bastante oneroso agregarEnableViewState="false" a cada control (en una página y creado en código) que no lo necesita, así que estoy tratando de deshabilitarlo en un nivel de página / control, y habilitarlo selectivamente para las cosas que lo necesitan. (Sí, me doy cuenta de que esto es arriesgado, pero en realidad solo hay un par de formularios grandes y un par de plantillas que, si se abordan, marcarían una gran diferencia).

Esto es lo que no entiendo.

Si un control o página tieneEnableViewState="false" it is<%.. %> descriptor, o en su etiqueta donde se crea en la página principal, todo se rompe, porque los datos ViewState agregados en el código no funcionan. Parece que puedo dejarlo habilitado en el nivel de control, pero establezcoEnableViewState a falso para un control de contenedor en cada contenedor, y luego establezcaViewStateMode=true (que anula eso) en un nivel por control.

o que no entiendo es lo que sucede cuando:

ViewStateMode = ViewStateMode.Enabled yEnableViewState = false para un control que contiene otros controles.

para un control. ¿Se pueden habilitar los controles internos aún conViewStateMode? Básicamente, ¿qué configuración tiene la última palabra cuando entran en conflicto?

Para cada contenedor, quiero poder deshabilitar todo en un control de contenedor, pero aún así asegurarme de que:

1)a configuración de @ViewState en código funciona y

2)ViewState está deshabilitado para todos los controles de forma predeterminada y

3) Puedo habilitar selectivamente ViewState para subcontroles.

Esto parece ser confuso. Si tengo un control de contenedor en la página maestra que se establece enEnableViewState="false", pero luego establezca un subcontrol enViewStateMode="Enabled", se rompe. Según MS, ViewStateMode debería reemplazar cualquier configuración externa de ViewState, sin embargo, no parece funcionar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta