【问题标题】:Possible bug in ASP.net UpdatePanel control?ASP.net UpdatePanel 控件中可能存在的错误?
【发布时间】:2011-02-10 13:35:54
【问题描述】:

我在 2 个单独的项目中遇到了一个似乎令人讨厌的 asp.net UpdatePanels 错误。如果您有某种启用了自动回发的控件,它会导致更新面板中的所有控件都设置为 visible=false,从而导致更新面板为空。

当您将自动回发控件更改回将重新启用更新面板中的所有控件的位置时,它根本不会回调服务器并且更新面板不会更新。

如果您在同一页面上进行其他任何回调,那么更新面板内容会神奇地出现。就好像 asp.net 已经决定更新面板是空的,所以没有必要进行回调,即使进行回调会使更新面板充满内容。

解决此问题的唯一方法是向控件添加display:none 样式,而不是设置visible=false 属性。
然后就可以正常使用了。

还有其他人遇到过这个问题吗?这是我怀疑的错误还是我做错了什么?目前我没有时间发布示例代码,因为我正在使用的代码过于包含在其他未实现的事物中,如果人们认为这会有所帮助,我将创建一个简单的示例并在有时间时发布。

【问题讨论】:

  • AutoPostback 控件在哪里?在更新面板里面?什么时候设置 IsAutoPostBack = true?
  • 自动回发在更新面板之外。 AutoPostBack = true 在标记中设置。

标签: .net asp.net updatepanel


【解决方案1】:

AutoPostBack="true" 的控件必须设置为 UpdatePanel 的 AsyncPostBackTrigger

【讨论】:

  • 是的,我知道这一点,确实如此。问题是它并不总是触发。问题是,如果您更改 AsyncPostBackTrigger 控件,并且 AsyncPostBack 的结果是使 UpdatePanel 的内容不可见。当您将控件更改回原始状态时,它根本不会触发 AsyncPostBack。 AsyncPostBackTrigger 和 AutoPostBack 属性是在 asp.net 标记中设置的,因此是固定的,这些属性不可能因为 AsyncPostBack 而改变。
  • 那么在更新面板中添加一个“asp:HiddenField”怎么样?
【解决方案2】:

将触发异步回发的控件放在更新面板中可以解决此问题。我肯定会说这是一个错误,因为唯一的区别是它在控件位于更新面板内时有效,而在更新面板外时无效。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。 我有一个更新面板和启用 = false 的下拉列表。当用户在 UpdatePanel 中执行 AsyncPostBack 时,UpdatePanel 外部的下拉菜单变为 enable=true 而不执行任何代码。当我在 UpdatePanel 中添加这些下拉菜单时 - 一切正常。我不知道为什么。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 2021-10-23
      • 2017-07-28
      • 2011-03-25
      • 1970-01-01
      • 2011-12-28
      • 2011-03-31
      • 2021-11-13
      相关资源
      最近更新 更多