zoukankan      html  css  js  c++  java
  • ajax PageMethods学习笔记

    使用Atlas我们可以调用两种服务端的方法WebService Method和Page Method,在前面的使用中,我们一直都是调用WebService Method,如何去调用一个Page Method?本文将简单的介绍一下这一内容。

     

    主要内容

    1.如何调用Page Method

    2.与WebService Method区别

     

    一.如何调用Page Method

    使用Atlas我们可以调用两种服务端的方法WebService Method和Page Method,在前面的使用中,我们一直都是调用WebService Method,如何去调用一个Page Method?本文将简单的介绍一下这一内容。

    1.在页面的.cs文件中,我们先定义一个public的方法:

    public static string EchoString(string s)

    {
        
    return "Hello : " + s;
    }

    再为这个方法加上WebMethod的特性,注意这一切我们都是在普通的ASPX页面中书写,而不是在.ASMX中:

    [System.Web.Services.WebMethod]

    public static string EchoString(string s)

    {
        
    return "Hello : " + s;
    }

    2.加入ScriptManager控件,这时候因为是Page Method,所以不再需要引入Web Service了

    <atlas:ScriptManager ID="ScriptManager1" runat="server">

    </atlas:ScriptManager>

    3.添加HTML控件

    <div>

        
    <h3>

            Enter your name:
    <input id="inputName" />

            
    <input id="buttonGo" type="button" value="GO" onclick="return OnbuttonGo_click()" />

        
    </h3>

    </div>

    4.编写JS代码调用,注意PageMethods这个类,方法EchoString仍然没变,但它却属于PageMethods类,所有的页面暴露的Page Method都应该属于PageMethods。

    <script type="text/javascript" language="JavaScript">

        
    function OnbuttonGo_click() 

        
    {
            requestSimpleService 
    = PageMethods.EchoString(

                document.getElementById('inputName').value,       
    //params

                OnComplete    
    //Complete event

                );

            
    return false;
        }


        
    function OnComplete(result) 

        
    {
            alert(result);
        }


    </script>

    编译运行:

    调用后:

    二.与WebService Method区别

    通过上面的例子大家可能看到了,似乎这种方式与调用WebService Method在PageMethods那儿有一点不同之外,其他的都差不多,为什么还会出现这种方式呢?现在如果我们需要在Web Method里面调用页面上的控件,那这种方式就很有价值了,对上面的例子作一下小小的改动,首先对TextBox加上runat=server属性,让它运行在服务端:

    <input id="inputName" runat="server"/>

    再修改Page Method如下:

    [System.Web.Services.WebMethod]

    public static string EchoString()

    {
        
    return "Hello : " + this.inputName.Value;
    }

    调用的JS代码:

    <script type="text/javascript" language="JavaScript">

        
    function OnbuttonGo_click() 

        
    {
            requestSimpleService 
    = PageMethods.EchoString(

                OnComplete    
    //Complete event

                );

            
    return false;
        }


        
    function OnComplete(result) 

        
    {
            alert(result);
        }


    </script>

    运行后调用:


    可以看到,在Page Method中,我们获取到了运行在服务端的TextBox的值。如果是在WebServer Method中,就不能再这样来实现了,这一点我想就是Page Method最大的价值吧。同时对于WebService Method和Page Method的工作原理也有很大的区别,看看Dflying Chen的解释:

    对于Atlas调用Web Service来说,当请求被发送时候,仅仅简单传给服务器方法的参数数据。而对于Atlas调用Page Method来说,传输的数据将会很多,将把表单中所有的域,包括ViewState,一起传送到服务器。在服务器端,它的工作方式也和普通的PostBack很相似:在这个Page Method被调用前,所有的服务器控件将得到它自身的状态。这也正是为什么Page Method中可以访问页面中控件状态的原因

    在实际使用中,我们也是尽可能多的使用WebService Method,只在必要的时候才使用Page Method。

    作者:wpf之家
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    javaHTTP请求工具类-使用HttpURLConnection实现
    windows 无法启动redis 服务(位于本地计算机上)错误1053 服务没有及时响应启动或控制请求
    Redis 教程
    谢娜离开《快本》103天,暴露了芒果一姐的假相:有一种天真,叫错把平台当本事
    Api 在线文档目录:java8 中文、java11中文
    Linux关闭防火墙命令red hat/CentOs7
    Win10使用RedisDesktopManager工具连接虚拟机(CentOS 7)Redis
    如何win10 上访问虚拟机(linux)上redis方法
    汽车车牌JS正则表达式验证(含新能源车牌)
    vue 直接输入路由地址进入_vue地址栏直接输入路由无效问题
  • 原文地址:https://www.cnblogs.com/wpf123/p/2052967.html
Copyright © 2011-2022 走看看