我在UserControl中有如下代码:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
If someCondition Then
childControl.Enabled = false
End If
MyBase.Render(writer)
End Sub
每当someCondition为true且在Render事件期间将childControl.Enabled设置为false时,将销毁childControl的ViewState(即如果它是TextBox,则用户输入的文本将丢失)。
请注意,只有ViewState丢失...控件仍然会在第一次使用正确的属性值进行渲染。仅在PostBack上,从ViewState恢复属性时实际丢失的值。
时间表如下:
我的理解是ViewState在调用Control.SaveViewState期间变得固定,它发生在调用Control.Render之前......但是我有什么细微差别吗?
答案 0 :(得分:2)
在空值后禁用的控件是什么?或者什么都不发布?说实话,我忘记了。但是,如果他们发布空值,那么您的视图状态就会被覆盖,就像您在文本框中输入新内容然后发布页面一样。