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

时间:2010-05-26 15:44:58

标签: c# asp.net .net-2.0 c#-2.0 viewstate

为什么控件确实包含值但是设置为.Enable = False所有控件都变为禁用(这没关系)但为什么ViewState不会在下一篇文章中保留数据?如果我在没有修改其启用状态的情况下获得UserControl,则ViewState在回发之间工作。

我们如何禁用一个UserControl,它的所有控件都被禁用(这部分工作)但是所有这些都保持使用ViewState(这不起作用)?

澄清:

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

myControl.Enabled = false;
//This produce to have all controls in myControl to be disabled.

2)在asp.cs中:单击“保存”退出编辑状态:

myControl.Enabled = true;
//This produce that all controls inside myControl are blank : no viewstate!

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

您是否尝试过Page.Form.SubmitDisabledControls = true;

答案 2 :(得分:0)

这是设计使然,如果您希望控件使用ViewState并仍然被禁用,那么您已禁用ClientSide上的控件。我使用Page.ClientScript来处理这个并注册你的javascript以禁用控件。