当 Control 变为 Enable=False 时,ASP.Net ViewState 不起作用

Pat*_*ins 0 c# asp.net viewstate .net-2.0 c#-2.0

为什么当一个控件确实包含值但它设置为 .Enable=False 时,所有控件都会变为禁用(没关系),但为什么 ViewState 不会在下一次回发时保留数据?如果我获取 UserControl 而不修改其启用状态,则 ViewState 在回发之间工作。

我们如何禁用 UserControl 使其所有控件都变为禁用(这部分有效),但所有控件都保留使用 ViewState(这不起作用)?

澄清:

1)在aspx.cs中单击按钮编辑:

myControl.Enabled = false;
//This produce to have all controls in myControl to be disabled.
Run Code Online (Sandbox Code Playgroud)

2)在asp.cs中:点击Save离开EDIT状态:

myControl.Enabled = true;
//This produce that all controls inside myControl are blank : no viewstate!
Run Code Online (Sandbox Code Playgroud)

其他回发之所以有效,是因为我们没有将 myControl.Enable 设置为 false。

Jax*_*ian 5

指定.Enable=False就像服务器端禁用,而不是客户端禁用。这是出于安全目的,因此即使用户使用某些客户端技巧“重新启用”输入元素,您也可以真正禁用它。如果您想执行客户端禁用,则需要使用脚本,或者可能使用属性readonly