前几天,同事碰到一个问题,帮忙看时。发现在updatepanel中的js脚本的服务器端变量不能刷新。
以下为重新现象代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.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?还是设计本来就是如此?