UpdatePanel冲突的几个解决办法
进入了ajax世界后,慢慢的发现一些原有的方法和控件与UpdatePanel冲突,导致错误的发生。通过慢慢的实践后,现总结与UpdatePanel发生冲突的代码及其解决方法。
1、UpdatePanel VS FileUpload
在UpdatePanel里FileUpload.hasfile总是为空的,所以不能直接在UpdatePanel里使用FileUpload控件。解决办法是把上传按钮的ID写在UpdatePanel的PostBackTrigger标签中的ControlID里。示例如下:
<asp:UpdatePanel ID="updatepanel4" runat ="server" >
<ContentTemplate >
<asp:Button ID="Button6" runat="server" Text="上传" height="20px" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID ="Button6" />
</Triggers>
</asp:UpdatePanel>
2、UpdatePanel VS ModalPopupExtender
这个问题可以通过变通的方法实现,可以采用纯后台控制的方法。将ModalPopupExtender的TargetControlID设置为一个隐藏字段,通过show和hide方法在后台控制ModalPopupExtender的显示状态。需要注意的是调用ModalPopupExtender.show方法的按钮必须在UpdatePanel中。
3、UpdatePanel VS 后台js代码
在UpdatePanel中是不能直接使用js代码的,如Response.Write("<script language='javascript' type='text/javascript'>alert('ok');</script>")。如果按照这样的方法调用JS代码只会出现错误信息。那么怎么解决这个问题呢?其实在ScriptManager中注册js代码就可解决,示例如下:
ScriptManager.RegisterStartupScript(Me.UpdatePanel1, Me.GetType(), "updateScript", "alert('ok');", True)
C#中需要把Me换成this