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

推荐订阅源

P
Privacy & Cybersecurity Law Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
V
V2EX
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
博客园 - 司徒正美
雷峰网
雷峰网
F
Full Disclosure
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
M
MIT News - Artificial intelligence
V
Visual Studio Blog
H
Help Net Security
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
博客园_首页
O
OpenAI News
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Attack and Defense Labs
Attack and Defense Labs
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
罗磊的独立博客
P
Palo Alto Networks Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
有赞技术团队
有赞技术团队
The Register - Security
The Register - Security
S
Security @ Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Threat Research - Cisco Blogs

博客园 - chinachen

查看DLL 版本 平台 x86 x64 MS SQL2008 数据库备份(收集) android 使用sqlite几种方式。 C# 接口 索引 属性 实质及应用 (收集) get set 用法总结 (收集) MVC 资料收集(一) windows运行命令大全 Html:meta标签的奥妙 (收集) - chinachen - 博客园 ASP.NET抓取页面并分析页面数据的研究与探讨。 C#中indexof和substring函数用法 (收集) - chinachen - 博客园 BlogEngine 深入研究(一) 开篇 统一过程,敏捷过程,微软过程(收集) HTTP服务器状态代码定义(Status Code Definitions)(收集) Lambda 表达式 源自MSDN 多个表 导出EXCEL 代码 (分享) C# 参考之方法参数关键字:params、ref及out (收集) nchar,char,varchar 与nvarchar区别 (收集) - chinachen 抽象类与接口区别 (收集) virtual 与 Abstract 区别
ASP.NET实现回调服务器方法 (收集)
chinachen · 2010-03-07 · via 博客园 - chinachen

在开发ASP.NET应用程序的过程中, 我们经常需要在不刷新页面的情况下回调服务器的一些信息.人们喜欢用一些集成的的类库来处理,其实,ASP.NET本身已以内置了服务器回调的信息.下面是一个简单的例子:
要实现回调,服务器必须实现 ICallbackEventHandler  接口.
如下:
public partial class _Default : System.Web.UI.Page ,ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.ClientScript.GetCallbackEventReference(this, "","", "");
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("");
    }
     void ICallbackEventHandler.RaiseCallbackEvent(String eventArgument)
    {
    }
     string ICallbackEventHandler.GetCallbackResult()
    {
        return "Data from server...";
    }
}
方法:Page.ClientScript.GetCallbackEventReference(this, "","", "");是为了能够在页面中导入回调时要使用的JS脚本.这里只使用了最简单的方法.目的只是为了在页面中导入JS脚本,没有执行其它任何操作.在导入的JS脚本里有一个WebForm_DoCallback()方法,我们实现回调主要就是依靠这个方法来实现的.
下面是WebForm_DoCallback()方法的原形:

function WebForm_DoCallback(eventTarget,eventArgument, eventCallback, 
context, errorCallback, useAsync);

eventTarget:指回调事件所指向的对象,一般使用:"__Page"来代替.
eventArgument:指回调事件使用的参数,这个参数一定要是字符串类型的.如果要传递对象的话,可以把对象转换成
字符串或其它可以还原为对象的字符串.这个参数会发送到服务器上,由上面的类中的方法:
RaiseCallbackEvent(String eventArgument)所接收,即在服务器上,我们使用
RaiseCallbackEvent(String eventArgument)的参数就是客户端上传的参数.
eventCallback:指当服务器事件执行完成后,会调用eventCallback参数所指向的方法.这个方法由两个参数.一般
是这样:function callbackEvent(arg,context){......}.这里,第一个参数是由服务器上的方法
GetCallbackResult()所返回的字符串.也必须是字符串类型的数据.第二个参数是我们回调
服务器时WebForm_DoCallback()方法中的context参数,它没有上传到服务器,而是
在客户端传送的,虽然它是字符串类型,但实际上它可以是任何javascript支持的数据类型.
如数组,对象等等.
下面是一段客户端代码:实现简单的回调.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function DoCallBack(arg,evt,context)
{
WebForm_DoCallback("__Page",arg,evt,context,null,false);
}
function btnCallback(arg,context)
{
DoCallBack(arg,this.callbackEvent,context);
 }       
functioncallbackEvent(arg,context)
        {
            alert(arg + context);
}
</script>
</head>
<body>
<form id="form1" runat="server"></form>
<input type="button" value="Callback" onclick="btnCallback(1, 'Message')"/>
</body>
</html>
在这里我对WebForm_DoCallback进行了一下简单的封装,方面直接调用回调的方法.需要注意的是:我们要实现回调的话,
在aspx页面中必须有一个运行在服务器上的form否则的话,服务器是不会在客户端的页面上导出实现回调
功能的脚本的.