.net GetCallbackEventReference参数说明和详细使用
来源:互联网 发布:金域名人大酒店 编辑:程序博客网 时间:2024/05/29 15:13
GetCallbackEventReference函数在 .NET Framework 2.0 版中是新增的。 在.NET Framework 4.0中提供的有四种重写方法
第一种函数原型为:
public string GetCallbackEventReference (
string target //指定的目标,不与control共同使用,一般用this代替当前目标
Control control, //页面控件,一般用this代替
string argument, //js脚本常量,可通过document.getElementById['']获取元素值,也可以直接写成传递的参数
string clientCallback, //回调成功后的页面刷新函数,一般直接写函数名称
string context //上下文对象一般不写
bool useAsync //是否使用异步,一般设置为true
string clientErrorCallBack //是否设置了错误处理程序
)
第一个参数指定了服务器端将要处理回调的目标对象,即处理客户端回调的服务器端控件。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。
如果传入的是this,则表示页面本身。也可以传入任何实现了ICallbackEventHandler的页面控件(page control)的引用。
在任何情况下,客户端的提交动作(submit action)会提交至和标准回传(postback)机制相同的ASPX页面。
第二个参数是一个JavaScript常量表达式,表示页面传给服务器的输入数据。
第三个参数是一个用户定义在<script>块中的JavaScript回调(callback)函数名。回调(callback)执行后,此函数最终负责页面的更新。
最后两个可选参数可用来指定错误处理函数(error handler)和上下文对象(context object)。
GetCallbackEventReference函数将产生如下的脚本调用:
WebForm_DoCallback(pageID, input, UpdateEmployeeViewHandler, null, null);
此函数的代码会自动下载到客户端并通过<script>标签添加到页面响应(page's response)中。WebForm_DoCallback 使用XmlHttpRequest DOM对象(XmlHttpRequest DOM object)回调(call back)当前页面的URL。
与此同时,它会添加一些额外的隐藏域(hidden field)以便服务器区分更简单的轻量级回调(callback)请求和一般回传(postback)请求。
处理请求时,ASP.NET运行时(runtime)标识出调用的目标对象(传给GetCallbackEventReference的第一个参数),确认它实现了ICallbackEventHandler接口后调用RaiseCallbackEvent方法:
void RaiseCallbackEvent (
string eventArgument
)
eventArgument一般即是通过GetCallbackEventReference指定的页面传递到服务器端的输入数据,即参数2
RaiseCallbackEvent处理完毕,即通过调用
public string GetCallbackResult()
将处理结果返回给调用控件,交由客户端执行GetCallbackEventReference指定的客户端脚本clientCallback,由其完成客户端刷新。
上面说过,脚本回调(script callback)并不适用于所有浏览器,尽管最新的浏览器,包括Internet Explorer 5+, Netscape 6+, and Safari1.2+都能行。
Microsoft在ASP.NET 2.0中加入了两个新的browser bapabilities:SupportsXmlHttp 与SupportsCallback以便开发人员检查方案的可行性。
一条让页面刷新更快的告诫
尽管脚本回调(script callback) 定义在ASP.NET 2.0中,要使其在ASP.NET 1.1里工作也并不很困难。在ASP.NET 2.0中,很多服务器控件(server control)借助脚本回调(script callback)提供了更迅速的页面刷新。
最突出的例子也许是GridView控件(GridView control),作为DataGrid的接班人,选择性地运用脚本回调(script callback)实现分页显示记录。
正如前面所说,脚本回调(script callback)依赖于文档对象模型(DOM)的XmlHttpRequest对象。在Internet Explorer中,此文档对象模型对象(DOM object)通过ActiveX控件(ActiveX control)实现——Microsoft.XmlHttp。
在IE中浏览这样的页面时,你必须适当降低安全设置以允许ActiveX控件(ActiveX control)能被脚本调用。在其他以同样方式实现XmlHttpRequest文档对象模型对象(DOM object)的浏览器中,这是不必要的。
js代码:
//用于操作后的提示
function ReceiveServerData(a) {
if (a == "True") {
alert("操作成功!");location.reload();
} else { alert("操作失败,请刷新后再试!") }
}
//回调的操作
$("#btnDisable").click(function () {
if ($(":input[id^='chk_']:checked").length > 0) {
if (confirm("确定要暂停选中的数据吗?")) {
var a = ""; $(":input[id^='chk_']:checked").each(function () {
a += this.id.substring(4) + ","
});
CallServer("Dis|" + a.substring(0, a.length - 1)) //回调函数,值传递id的一部分
}
} else { alert("请选择要暂停的数据!") }
});
$("#btnEnabled").click(function () {
if ($(":input[id^='chk_']:checked").length > 0) {
if (confirm("确定要发布选中的数据吗?")) {
var a = ""; $(":input[id^='chk_']:checked").each(function () { a += this.id.substring(4) + "," });
CallServer("Ena|" + a.substring(0, a.length - 1))
}
} else { alert("请选择要发布的数据!") }
})
aspx页面:
#region ICallbackEventHandler
private bool returnValue;
private void RegisterCallBack()
{
ClientScript.RegisterClientScriptBlock(GetType(), "CallServer", "function CallServer(arg) {" + ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "") + "}", true);
}
public string GetCallbackResult()
{
return returnValue ? bool.TrueString : bool.FalseString;
}
public void RaiseCallbackEvent(string eventArgument)
{
string[] arg = eventArgument.Split('|');
switch (arg[0])
{
case "Dis":
returnValue = bll.PauseRelease(arg[1]);
break;
case "Ena":
returnValue = bll.ResumeRelease(arg[1]);
break;
}
}
#endregion
- .net GetCallbackEventReference参数说明和详细使用
- net命令参数详细说明
- net命令参数详细说明
- 使用GetCallbackEventReference来AJAX
- CListView的详细使用参数说明
- CListView的详细使用及参数说明
- 关于set_perm参数使用的详细说明
- 关于set_perm参数使用的详细说明
- Matrix使用和详细说明
- GetCallbackEventReference
- GHOST参数详细说明
- setsockopt参数详细说明
- ghost参数详细说明
- GHOST参数详细说明
- setsockopt参数详细说明!
- setsockopt参数详细说明
- FushionChart参数详细说明
- setsockopt参数详细说明
- ONE- Open Navigator Engine 开放式浏览器引擎
- 在 列表控件 中插入 进度条 SDK
- flex 返回值大于或等于其本身的最接近值
- LDTP(Linux Desktop Test Project)摘要
- Flex 文本框无法输入中文的bug
- .net GetCallbackEventReference参数说明和详细使用
- 网络故障诊断和排除
- mschart绘制曲线图
- c_c++ :字符处理
- 免费的Android UI库及组件推荐
- windows系统下JDK1.6环境变量配置
- 一个不错的记录Log的程序
- 类
- js学习四-ajax