サミュエルのアプローチが機能するかどうかを知りたいです。試してみたら、結果を投稿してください。
サミュエルが間違っていると言っているわけではありません。
私が興味を持っている理由は、ビューステートが再帰的にシリアル化されるため (サミュエルが述べたように)、ビューステートが無効になっているコントロールの子であるビューステートが有効になっている 1 つのコントロールがある場合、子コントロールにはビューステートがないためです。親レベルで完全にスキップします。多くの子コントロールを自然に含む独自のユーザー コントロールを作成した場合、これは特に厄介です。
もう 1 つの解決策は、Samuel のユーティリティ メソッド アプローチを使用することですが、すべてを無効にする代わりに、Label、Literal などの子を持たないコントロールに対してのみ無効にします...または、子を持っている場合は、子のビューステートが無効になっていても問題ありません。
上記の理由から、パネルとプレースホルダーのビューステートを無効にすることは当然避けたいと思うでしょう。
編集:
Public Shared Sub DisableViewState(ByVal cntrl As Control)
If TypeOf cntrl Is Label Then
cntrl.EnableViewState = False
ElseIf TypeOf cntrl Is Literal Then
cntrl.EnableViewState = False
ElseIf TypeOf cntrl Is Button Then
cntrl.EnableViewState = False
Else
If cntrl.Controls IsNot Nothing Then
For Each subControl As Control In cntrl.Controls
DisableViewState(subControl)
Next
End If
End If
End Sub