zoukankan      html  css  js  c++  java
  • ASP.NET—015:ASP.NET中无刷新页面实现

    原文作者:杨友山

    原文地址: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
    这样的方式对于少量控件的更新和取值,以及button的操作事件等都比較适用。

    只是对于gridview控件的绑定就不方便了,使用gridview的databind在线程中不能绑定数据。所以这里再介绍一种无刷新页面的方法,也就是updatepanel控件。

    也是ajax中的。


    不多说了,直接看用法。


    1、准备工作。
    须要准备例如以下三个dll。
    System.Web.Extensions.Design.dll
    System.Web.Extensions.dll
    AjaxControlToolkit.dll
    前两个都好说,仅仅要安装ASPAJAXExtSetup 1.0.exe就有了,详细文件夹在:安装盘Microsoft ASP.NETASP.NET 2.0 AJAX Extensionsv1.0.61025下。
    对于AjaxControlToolkit.dll则须要安装AjaxControlToolkit-framework x.x。
    本文是针对.net framework2.0的,所下面载AjaxControlToolkit-framework2.0 ,这个网上有带源代码的。


    下载地址:http://download.csdn.net/detail/yysyangyangyangshan/7991393
    将这三个dll引用到project中。AjaxControlToolkit.dll这里下载的是源代码,须要自己把程序集生成为dll再引用进project中来。


    在工具箱中就有了例如以下控件:

    2、 配置文件
    web.config中须要添加例如以下节点
    <system.web></system.web>中:
          <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <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"/>
         </httpHandlers>
    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" %>
    用法例如以下:
    这里简单实现下面:点击button,然后页面文本框显示当前时间。


    project:
    001
    前台:

    <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI" TagPrefix="asp" %>
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:updatepanel runat="server">
             <ContentTemplate>
                <asp:TextBox ID="txtTime" runat="server" Width="150px"></asp:TextBox>
                <asp:Button  ID="btnTime" runat="server" Text="获取系统时间" OnClick="Btn_Time_Click"/>
             </ContentTemplate>
            </asp:updatepanel>
        </div>
        </form>
    </body>
    </html>
    后台:
      public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
               
            }
    
    
            protected void Btn_Time_Click(object sender, EventArgs e)
            {
                this.txtTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            }
        }
    web.config配置
    <?xml version="1.0"?

    > <configuration> <appSettings /> <connectionStrings /> <system.web> <compilation debug="true"> </compilation> <!-- 通过 <authentication> 节能够配置 安全身份验证模式,ASP.NET 使用该模式来识别来訪用户身份。

    --> <authentication mode="Windows" /> <!-- 假设在运行请求的过程中出现未处理的错误, 则通过 <customErrors> 节 能够配置相应的处理步骤。详细而言。 开发者通过该节可配置要显示的 html 错误页。 以取代错误堆栈跟踪。 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <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"/> </httpHandlers> </system.web> </configuration>

    这样一来。button的click事件后,页面就不会总体刷新了。而updatepanel要注意写法:
    <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:updatepanel runat="server">
             <ContentTemplate>
               <!--放置你的控件-->
             </ContentTemplate>
            </asp:updatepanel>

    这样不论是简单的textbox。还是对gridview绑定都能够了。

    另外,针对updatepanel之间的控件,假设有的须要局部刷新,有的须要总体页面刷新,能够用到Triggers标签。格式例如以下:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>
    <asp:updatepanel runat="server">
    <ContentTemplate> 
    <!-- 用户控件-->
    </ContentTemplate> 
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="" EventName="" />
        <asp:PostBackTrigger ControlID="" />
      </Triggers>
    </asp:updatepanel>

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

    <script type="text/javascript">
        $(function () {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        });
    
    
        function EndRequestHandler() {
           //刷新后的操作
        }
      </script>
    使用的样例见下文。
    代码下载:http://download.csdn.net/detail/yysyangyangyangshan/7991427


  • 相关阅读:
    linux 上安裝lnmp
    html 禁用点击事件
    nftables 是什么? 提供什么功能? 如何使用?
    ESXi主机RAID卡_HBA卡_网卡 型号_固件_驱动查询
    Celery Beat定时任务
    Centos 7/8 安装Rabbit-MQ
    Celery 最佳实践
    Django 3.0 + Celery 4.4 + RabbitMQ
    C语言Socket示例
    深入理解计算机系统 — 读书笔记
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6708158.html
Copyright © 2011-2022 走看看