同时部分和整个回发引起的回发错误?

时间:2011-12-07 17:25:22

标签: asp.net updatepanel

在ASP.NET 2.0项目中,我有一个用于编辑相当复杂的数据类型的表单。表单主要包含在UpdatePanel中,因为表单的各个部分根据下拉列表和单选按钮中的选择显示和消失。 “保存”和“取消”按钮不在UpdatePanel中。

我设计了它,以便在Page_Load上我从ViewState反编译我正在编辑的对象,并从页面上的控件更新其属性。然后在OnPreRender中,我根据对象的属性使用新的可见性/值更新控件,并将对象序列化为ViewState。

我遇到了一个问题,我可以简单地一直得到这个错误:

  

Sys.WebForms.PageRequestManagerServerErrorException:未知错误   在服务器上处理请求时发生。状态代码   从服务器返回的是:0

页面上有一个面板根据其上方的下拉列表中的选择显示/消失。下拉列表AutoPostBack设置为True,但没有附加事件处理程序;它会导致回发,这意味着在Page_Load中编辑对象,并根据对象的新状态在OnPreRender中更新面板的可见性。此外,下拉列表是页面加载时的默认聚焦控件。

重复步骤如下:

  1. 打开要编辑的对象
  2. 不点击任何内容,按键盘上的键可更改下拉列表的值。
    • 使用鼠标更改下拉列表会导致部分回发并更新面板的可见性。在焦点离开下拉列表之前,使用键盘进行更改不会执行任何操作。
  3. 单击“保存”按钮。短暂出现错误,然后页面刷新并成功保存对象。
  4. 如上所述,下拉后不会回发,直到用键盘更改后失去焦点。我认为发生的事情是单击“保存”按钮会从下拉列表中更改焦点,并在从“保存”按钮回发的同时从下拉列表开始回发。这就是错误出现的原因。

    那么什么是最好的解决方案?我可以使该控件不是默认焦点,但仍然可以通过创建使用tab键来发生错误。我的整体设计在这里是不明智的吗?

    更新:This question似乎是同一个问题;他们的解决方案是简单地隐藏错误消息。这是明智的吗?

0 个答案:

没有答案