【问题标题】:How to prevent my ASP.NET checkbox from being reset on postback?如何防止我的 ASP.NET 复选框在回发时被重置?
【发布时间】:2013-05-27 02:32:38
【问题描述】:

我调用以下代码:

protected void Page_Load(object sender, EventArgs e)
{
    //Note that this is not my actual code
    //this illustrates what happens
    if(IsPostBack)
    {
        CheckBox1.Checked = true;
    }
}

但因此,在回发后,复选框不遵守我将其设置为“真”的命令,并将代码中的某处重置为控件中选择的任何用户。

如何防止这种情况发生?

【问题讨论】:

  • 在任何代码将其设置为 false 之后,您必须将其设置为 true
  • if(!IsPostBack) { CheckBox1.Checked = true; }
  • 所以用户选中该复选框,并且在回发时您不希望该选中值保留?
  • @YuriyGalanter:没那么简单。回发发生在 DropDownList 控件更改后,但复选框需要根据新的选择进行更新。
  • 是什么触发了回发、下拉选择的索引更改或按钮点击?您想要的结果是在回发时始终选中复选框吗?回发是否有重定向?

标签: c# asp.net .net web-applications postback


【解决方案1】:

回发发生在 DropDownList 控件更改之后,但是 复选框需要根据新的选择进行更新

因此,在 DropDownList 的选定索引更改事件中设置 CheckBox1.Checked 值

【讨论】:

  • 是的,我想到了,但是我需要根据该复选框从 Page_Load() 中对页面进行控制。
  • @c00000fd 你能用页面加载的完整代码更新问题吗?
  • 好的。我想我把它修好了。通过在更改 DropDownList 控件而不是 Page_Load() 时从事件更新我的控件似乎可以解决问题。显然,当您在回发期间从 Page_Load() 设置控件时,它们稍后会重新初始化...
【解决方案2】:

CTRL + F "CheckBox1" 有代码将其设置为 false

要检查的另一件事是 ViewState 是否已打开,默认情况下它应该是打开的。同时设置特定复选框的EnableViewState="true",默认为true

【讨论】:

  • 没有。除了在一个地方之外,我的代码中没有其他地方设置它。它必须与该视图状态或他们所说的任何东西有关......
【解决方案3】:

如果您不希望用户选择在回发后将控件的EnableViewState 属性设置为False

【讨论】:

  • 我以为用户设置为 true ,并且它被重新设置为 false ,我建议打开 viewstate ,不太明白这个问题
  • @ScottSelby 我的理解是,在下一次回发时进行选择后,它不需要持续存在,而是通过代码进行更改。我可能错了
  • 谢谢你们。我确实将EnableViewState="false" 放在复选框上,但没有帮助......
  • @ScottSelby:正如我上面所说——回发发生在 DropDownList 控件更改之后,但复选框需要根据新选择进行更新。
  • @c00000fd 您能否发布您的代码 - 您如何在事件处理程序中设置检查值?
猜你喜欢
  • 2021-08-10
  • 2011-04-04
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多