服务器控件的异步请求——UpdatePanel和ScriptManager
aspx文件里面有以下一段代码
<body> <form id="form1" runat="server"> <div> <%=DateTime.Now %> <uc1:UserControl runat="server" ID="UserControl" /> </div> </form> </body>
注:UserControl1是外部拖拽进来的一个DropDownList用户控件,切换选项时可以触发页面刷新,可以换成其它的控件,只要能触发刷新就行
运行效果是什么呢?由于获取时间和用户控件的线程是同步的,所以每次切换用户控件都将改变页面上显示的时间。
那如何使得用户控件操作不刷新整个页面,而只刷新自己呢?(这里有点拗口,总之理解为DropDownList选项切换时其它的保持原样而不刷新就行)
这里可以使用两个服务器控件达到目的:UpdatePanel和ScriptManager
我们尝试着在上面的基础上插入几行代码,注意两次代码的区别:
<body> <form id="form1" runat="server"> <div> <%=DateTime.Now %> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <uc1:UserControl runat="server" ID="UserControl" /> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body>
我在这里先是添加了一个ScriptManager,然后再用一个UpdatePanel将DDL控件给包了起来
注:<ContentTemplate>的作用是定义更新面板的内容模板,也就是放在这里面的内容才是需要更新的
这次的运行效果是什么呢?
不管怎么切换下拉框的选项,都不会导致页面上时间的改变。
原因是,经过这一处理后,下拉框用户控件选项的改变成了异步请求,不会刷新整个页面,所以前面的时间也不会重新得到获取,因此不会改变
(完)