我的Asp.net 3.5 Visual Studio 2008 Web应用程序有一个Web页面(Admin.aspx),它带有一个运行冗长过程(30秒+)的按钮事件,然后触发UpdatePanel1.Update( )刷新页面..导致无效操作异常。UpdatePanel Update()会导致InvalidOperationException错误
Admin.aspx有一个母版
Admin.aspx(部分)在这里:
<div id="Tabs">
<div class="cen2">
<asp:ScriptManager ID="ScriptManager1" AsyncPostBackTimeOut="360000" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="False" runat="server"
UpdateMode="Conditional" >
<ContentTemplate>
cont....... >
Admin.aspx.cs这里(部分),这是由一个代表事件被解雇。
private void port_trdRes(object sender, DataTable dt)
{
dlResSum.DataSource = dt;
dlResSum.DataBind();
try
{
UpdatePanel1.Update();
}
catch (Exception webex)
{
SendErr("Admin.aspx PortTrd Res Exception " + webex.Message.ToString());
}
simtrd.port.trdRes -= new Steury.Trading.TrdSummDelegate(port_trdRes);
}
当我到UpdatePanel1.Update()
它总是给我一个
错误:
'System.InvalidOperationException' 类型 的第一次机会异常出现在System.Web.Extensions程序.dll
尝试catch向我发送此消息..“异常的更新方法只能在所谓的UpdatePanel与ID UpdatePanel1之前渲染” ...但还是不更新。 – CraigJSte 2012-04-28 14:00:08
@CraigJSte根据您的评论更新了帖子。看起来好像在updatepanel中的控件在由部分回发创建之前正试图由服务器调用。将ChildrenAsTriggers设置为false可能会更正此问题。 – rlcrews 2012-04-28 14:45:43
在为ChildrenTriggers修改后的代码仍然会引发此问题(请参见上文)..... Admin.aspx PortTrd Res异常Update方法只能在渲染前使用ID为UpdatePanel1的UpdatePanel上调用。 – CraigJSte 2012-04-28 17:13:09