代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

当控件变为enable=false时,ASP.NET ViewState不工作

  •  0
  • Patrick Desjardins  · 技术社区  · 16 年前

    为什么控件确实包含值,但设置为.enable=false时,所有控件都变为禁用(可以),但为什么视图状态不在下一个回发时保留数据?如果在不修改用户控件的启用状态的情况下获取该用户控件,则视图状态在回发之间工作。

    我们如何禁用一个用户控件,它的所有控件都变为禁用(这部分工作),但所有控件都保持使用视图状态(这不工作)?

    澄清:

    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 回复  |  直到 16 年前
        1
  •  4
  •   Jaxidian    16 年前

    指定 .Enable=False 就像服务器端禁用,而不是客户端禁用。这是为了安全起见,所以您可以真正禁用输入元素,即使用户使用一些客户端欺骗来“重新启用”它。如果要执行客户端禁用,则需要为此使用脚本,或者使用 readonly 属性。

        2
  •  0
  •   Michael Grassman    16 年前

    是否尝试page.form.SubmitDisableControls=true;

        3
  •  0
  •   Gary L Cox Jr    16 年前

    这是按设计的,如果您希望控件使用ViewState并且仍然被禁用,那么您已经在客户端禁用了该控件。我使用page.clientscript来处理这个问题,并注册您的javascript来禁用该控件。

    推荐文章