找回密码
 会员注册
查看: 143|回复: 0

ASP.NET—015:ASP.NET中无刷新页面实现

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962992
发表于 2024-2-29 08:19:50 | 显示全部楼层 |阅读模式

原文作者:杨友山

原文地址:http://blog.csdn.net/yysyangyangyangshan/article/details/39679823

前面也说过在asp.net中前后前交互的问题。使用了ajax.js的方法:$.post和$.ajax。

http://blog.csdn.net/yysyangyangyangshan/article/details/22755007和
http://blog.csdn.net/yysyangyangyangshan/article/details/22438077
这种方式对于少量控件的更新和取值,以及按钮的操作事件等都比较适用。不过对于gridview控件的绑定就不方便了,使用gridview的databind在线程中不能绑定数据。所以这里再介绍一种无刷新页面的方法,也就是updatepanel控件。也是ajax中的。
不多说了,直接看用法。
1、准备工作。
需要准备如下三个dll。
System.Web.Extensions.Design.dll
System.Web.Extensions.dll
AjaxControlToolkit.dll
前两个都好说,只要安装ASPAJAXExtSetup 1.0.exe就有了,具体目录在:安装盘\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025下。
对于AjaxControlToolkit.dll则需要安装AjaxControlToolkit-framework x.x。
本文是针对.net framework2.0的,所以下载AjaxControlToolkit-framework2.0 ,这个网上有带源码的。
下载地址: http://download.csdn.net/detail/yysyangyangyangshan/7991393
将这三个dll引用到工程中。AjaxControlToolkit.dll这里下载的是源码,需要自己把程序集生成为dll再引用进工程中来。
在工具箱中就有了如下控件:

2、 配置文件
web.config中需要增加如下节点
中:
     
       
       
       
     

1.0.61025.0要和ASPAJAXExtSetup安装后的目录版本对应。
3、页面注册
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI" TagPrefix="asp" %>
使用方法如下:
这里简单实现以下:点击按钮,然后页面文本框显示当前时间。
工程:
001
前台:
  1. <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
  2. Namespace="System.Web.UI" TagPrefix="asp" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6. <title></title>
  7. </head>
  8. <body>
  9. <form id="form1" runat="server">
  10. <div>
  11. <asp:ScriptManager ID="ScriptManager1" runat="server">
  12. </asp:ScriptManager>
  13. <asp:updatepanel runat="server">
  14. <ContentTemplate>
  15. <asp:TextBox ID="txtTime" runat="server" Width="150px"></asp:TextBox>
  16. <asp:Button ID="btnTime" runat="server" Text="获取系统时间" OnClick="Btn_Time_Click"/>
  17. </ContentTemplate>
  18. </asp:updatepanel>
  19. </div>
  20. </form>
  21. </body>
  22. </html>
复制代码
后台:
  1. public partial class _Default : System.Web.UI.Page
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5. }
  6. protected void Btn_Time_Click(object sender, EventArgs e)
  7. {
  8. this.txtTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  9. }
  10. }
复制代码
web.config配置
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <appSettings />
  4. <connectionStrings />
  5. <system.web>
  6. <compilation debug="true">
  7. </compilation>
  8. <!--
  9. 通过 <authentication> 节可以配置
  10. 安全身份验证模式,ASP.NET
  11. 使用该模式来识别来访用户身份。
  12. -->
  13. <authentication mode="Windows" />
  14. <!--
  15. 如果在执行请求的过程中出现未处理的错误,
  16. 则通过 <customErrors> 节
  17. 可以配置相应的处理步骤。具体而言,
  18. 开发人员通过该节可配置要显示的 html 错误页,
  19. 以代替错误堆栈跟踪。
  20. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
  21. <error statusCode="403" redirect="NoAccess.htm" />
  22. <error statusCode="404" redirect="FileNotFound.htm" />
  23. </customErrors>
  24. -->
  25. <httpHandlers>
  26. <remove verb="*" path="*.asmx"/>
  27. <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  28. <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
  29. </httpHandlers>
  30. </system.web>
  31. </configuration>
复制代码
这样一来,按钮的click事件后,页面就不会整体刷新了。而updatepanel要注意写法:
  1. <asp:ScriptManager ID="ScriptManager1" runat="server">
  2. </asp:ScriptManager>
  3. <asp:updatepanel runat="server">
  4. <ContentTemplate>
  5. <!--放置你的控件-->
  6. </ContentTemplate>
  7. </asp:updatepanel>
复制代码

这样不论是简单的textbox,还是对gridview绑定都可以了。

另外,针对updatepanel之间的控件,如果有的需要局部刷新,有的需要整体页面刷新,可以用到Triggers标签,格式如下:

  1. <asp:ScriptManager ID="ScriptManager1" runat="server">
  2. </asp:ScriptManager>
  3. <asp:updatepanel runat="server">
  4. <ContentTemplate>
  5. <!-- 用户控件-->
  6. </ContentTemplate>
  7. <Triggers>
  8. <asp:AsyncPostBackTrigger ControlID="" EventName="" />
  9. <asp:PostBackTrigger ControlID="" />
  10. </Triggers>
  11. </asp:updatepanel>
复制代码

而每一次局部刷新完成后的事件也是可以加以利用的。如果想在刷新完后再做某些处理,可以在script中加如下代码:

  1. <script type="text/javascript">
  2. $(function () {
  3. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
  4. });
  5. function EndRequestHandler() {
  6. //刷新后的操作
  7. }
  8. </script>
复制代码
使用的例子见下文。
代码下载: http://download.csdn.net/detail/yysyangyangyangshan/7991427



来源:https://blog.csdn.net/yysyangyangyangshan/article/details/39679823
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 01:45 , Processed in 1.808588 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表