惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
S
Schneier on Security
罗磊的独立博客
AWS News Blog
AWS News Blog
S
Securelist
J
Java Code Geeks
月光博客
月光博客
V
Vulnerabilities – Threatpost
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
G
GRAHAM CLULEY
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
The Hacker News
The Hacker News
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Scott Helme
Scott Helme
博客园 - Franky
S
Security Affairs
Cyberwarzone
Cyberwarzone
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Forbes - Security
Forbes - Security
K
Kaspersky official blog
Martin Fowler
Martin Fowler
Schneier on Security
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
宝玉的分享
宝玉的分享
腾讯CDC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
美团技术团队
MyScale Blog
MyScale Blog
L
LangChain Blog
V
V2EX
N
News | PayPal Newsroom
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家

博客园 - .............

验证码生成器 十年编程无师自通 模仿桌面外观 Web服务是否失去前进目标 “开源”SOA正在改写IT规划方程式 C#实现的18位身份证格式验证算法 - ............. - 博客园 怎样使用Junit Framework进行单元测试的编写 从一个项目谈XP在国内的应用 - ............. - 博客园 AOP是什么? 在C#中使用Conditional元数据attribute来实现Debug代码 - ............. - 博客园 IBM CRM 系统解决方案 HR软件之我见-小议目前HR供应商 Atlas学习手记(11):使用ModalPopup Extender Atlas学习手记(10):使用AlwaysVisibleControl Extender Atlas学习手记(8):调用本地Web Service简单介绍 Atlas学习手记(7):使用DragOverlayExtender实现拖放功能 Atlas学习手记(6):使用Atlas UpdateProgress控件 Atlas学习手记(5):使用服务端定时控件TimerControl Atlas学习手记(4):使用AutoComplete Extender实现自动完成功能 Atlas学习手记(3):由UpdatePanel开始
Atlas学习手记(9):异步调用Page Method
............. · 2006-08-03 · via 博客园 - .............

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

主要内容

1.如何调用Page Method

2.与WebService Method区别

一.如何调用Page Method

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

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

public string EchoString(string s)

{
    
return "Hello : " + s;
}

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

[System.Web.Services.WebMethod]

public 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 MethodPageMethods那儿有一点不同之外,其他的都差不多,为什么还会出现这种方式呢?现在如果我们需要在Web Method里面调用页面上的控件,那这种方式就很有价值了,对上面的例子作一下小小的改动,首先对TextBox加上runat=server属性,让它运行在服务端:

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

再修改Page Method如下:

[System.Web.Services.WebMethod]

public 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 MethodPage Method的工作原理也有很大的区别,看看Dflying Chen的解释:

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

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

完整示例下载:https://files.cnblogs.com/Terrylee/PageMethodDemo.rar