我刚刚发现 AJAX 更新面板的奇怪行为。第一个让我尴尬的想法是我注意到当我在异步回发期间抛出异常时,它被环境吞没了。
因为这是我第一次遇到这样的问题,所以我开始做实验——尝试抛出不同类型的异常,或者在 updatePanel 之外抛出相同的异常(例如在 Page_Init 事件中)。结论是当async postback抛出exception时,环境会吞掉它,页面渲染的时候就好像什么都没发生一样(这是不能接受的地方)。但是当我在正常的页面生命周期内抛出异常时,异常以通常的方式转发并且页面按预期失败(我希望我的推论是正确的)
问题是我应该怎么做才能启用异常抛出
(顺便说一句,当我写这条消息时,我注意到由于业务逻辑的变化,不再需要抛出上述异常,但无论如何我都对它发生的原因感兴趣)
updatePanel 的第二个问题是,当我在 Page_Load 中设置它 {up.Visible=false;} 时,然后在某些方法中设置它 {up.Visible=true;} up.Update() } - 它仍然没有渲染。我在两个地方都设置了断点; .visible 在页面呈现时设置为 true,但无论如何它仍然是不可见的。我没有看到任何明显的原因。
谢谢。
最佳答案
要在更新面板代码中抛出错误时启用 asp.net 错误屏幕,您需要在 ScriptManager 中进行设置:
EnablePartialRendering="false"
关于AJAX 更新面板吞下异常及其奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569991/