在ASP.NET 2.0项目中,我有一个用于编辑相当复杂的数据类型的表单。表单主要包含在UpdatePanel中,因为表单的各个部分根据下拉列表和单选按钮中的选择显示和消失。 “保存”和“取消”按钮不在UpdatePanel中。
我设计了它,以便在Page_Load
上我从ViewState反编译我正在编辑的对象,并从页面上的控件更新其属性。然后在OnPreRender
中,我根据对象的属性使用新的可见性/值更新控件,并将对象序列化为ViewState。
我遇到了一个问题,我可以简单地一直得到这个错误:
Sys.WebForms.PageRequestManagerServerErrorException:未知错误 在服务器上处理请求时发生。状态代码 从服务器返回的是:0
页面上有一个面板根据其上方的下拉列表中的选择显示/消失。下拉列表AutoPostBack
设置为True,但没有附加事件处理程序;它会导致回发,这意味着在Page_Load
中编辑对象,并根据对象的新状态在OnPreRender
中更新面板的可见性。此外,下拉列表是页面加载时的默认聚焦控件。
重复步骤如下:
如上所述,下拉后不会回发,直到用键盘更改后失去焦点。我认为发生的事情是单击“保存”按钮会从下拉列表中更改焦点,并在从“保存”按钮回发的同时从下拉列表开始回发。这就是错误出现的原因。
那么什么是最好的解决方案?我可以使该控件不是默认焦点,但仍然可以通过创建使用tab键来发生错误。我的整体设计在这里是不明智的吗?
更新:This question似乎是同一个问题;他们的解决方案是简单地隐藏错误消息。这是明智的吗?