前几天,同事碰到一个问题,帮忙看时。发现在updatepanel中的js脚本的服务器端变量不能刷新。
以下为重新现象代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<
form
id
="form1"
runat
="server"
>
< div >
< asp:ScriptManager ID ="ScriptManager1" runat ="server" >
</ asp:ScriptManager >
< asp:UpdatePanel ID ="UpdatePanel1" runat ="server" >
< ContentTemplate >
< asp:Button ID ="Button1" runat ="server" Text ="doPostBack" />
< input type ="button" name ="ShowNow" value ="ShowNow" onclick ="showNow()" />
<% = DateTime.Now.ToString() %>
< script type ="text/javascript" >
function showNow() {
alert( " <%=DateTime.Now.ToString() %> " );
}
</ script >
</ ContentTemplate >
</ asp:UpdatePanel >
<% = DateTime.Now.ToString() %>
</ div >
</ form >
< div >
< asp:ScriptManager ID ="ScriptManager1" runat ="server" >
</ asp:ScriptManager >
< asp:UpdatePanel ID ="UpdatePanel1" runat ="server" >
< ContentTemplate >
< asp:Button ID ="Button1" runat ="server" Text ="doPostBack" />
< input type ="button" name ="ShowNow" value ="ShowNow" onclick ="showNow()" />
<% = DateTime.Now.ToString() %>
< script type ="text/javascript" >
function showNow() {
alert( " <%=DateTime.Now.ToString() %> " );
}
</ script >
</ ContentTemplate >
</ asp:UpdatePanel >
<% = DateTime.Now.ToString() %>
</ div >
</ form >
代码内容很简单。当你点击doPostBack按钮后,updatepanel内的时间发生了变化(但js脚本的时间没有变),updatepanel外的时间没有变化。
以前还真不知道updatepanel更新时会过滤js中服务器端脚本。
不知道这算bug?还是设计本来就是如此?