ASP.NET
客户端回调实现 (C#) 示例
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->
演示实现客户端回调的 ASP.NET 网页。有关更多信息,请参见在 ASP.NET 网页中不经过回发而实现客户端回调。
示例
说明
下面的代码示例分为两部分。示例的第一部分演示一个 ASP.NET 网页(.aspx 页)。第二部分演示相应的代码隐藏文件(.aspx.cs 文件)。
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ClientCallback.aspx.cs"Inherits="ClientCallback"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML
1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<headrunat="server">
<scripttype="text/javascript">
functionLookUpStock()
...{
varlb=document.forms[0].ListBox1;
varproduct=lb.options[lb.selectedIndex].text
CallServer(product,"");
}
functionReceiveServerData(rValue)
...{
Results.innerText=rValue;
}
</script>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:ListBoxID="ListBox1"Runat="server"></asp:ListBox>
<br/>
<br/>
<buttononclick="LookUpStock()">LookUpStock</button>
<br/>
<br/>
Itemsinstock:<spanID="Results"></span>
<br/>
</div>
</form>
</body>
</html>
//ClientCallback.aspx.cscode-behindpage
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclassClientCallback:System.Web.UI.Page,
System.Web.UI.ICallbackEventHandler
...{
protectedSystem.Collections.Specialized.ListDictionarycatalog;
protectedvoidPage_Load(objectsender,EventArgse)
...{
StringcbReference=
Page.ClientScript.GetCallbackEventReference(this,
"arg","ReceiveServerData","context");
StringcallbackScript;
callbackScript="functionCallServer(arg,context)"+
"{"+cbReference+"};";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"CallServer",callbackScript,true);
catalog=newSystem.Collections.Specialized.ListDictionary();
catalog.Add("monitor",12);
catalog.Add("laptop",10);
catalog.Add("keyboard",23);
catalog.Add("mouse",17);
ListBox1.DataSource=catalog;
ListBox1.DataTextField="key";
ListBox1.DataBind();
}
publicStringRaiseCallbackEvent(StringeventArgument)
...{
StringreturnValue;
if(catalog[eventArgument]==null)
...{
returnValue="-1";
}
else
...{
returnValue=catalog[eventArgument].ToString();
}
returnreturnValue;
}
}
该网页模拟一个数据库查找,以确定一系列产品(显示器、键盘等)的供货数量或库存数量。为了简化此代码示例,数据库由包含少量物品的词典列表来表示。对于表中的每件物品,键就是物品名称(如显示器),值就是物品的库存数。但是在成品应用程序中,将使用数据库。
当运行此页时,ListBox 控件被绑定到哈希表,这样,ListBox 控件便可以显示产品列表。此页还包含一个 button 元素(并非 Button Web 服务器控件),其 onclick 事件被绑定到一个名为 LookUpStock 的客户端函数。当用户单击按钮时,该按钮便会执行 LookUpStock 函数,此函数从列表框中获取当前所选内容,然后通过调用 CallServer 函数来执行客户端回调。
代码隐藏页通过 RegisterClientScriptBlock 方法向该页添加客户端脚本。添加到该页的脚本包括一个称为 CallServer 的函数,此函数用于获取将从 GetCallbackEventReference 方法回发到服务器的方法的名称。
客户端回调调用 RaiseCallbackEvent 方法,该方法会返回传递给它的产品的可用库存。请注意,在客户端脚本与服务器代码之间发送的参数只能是字符串。
安全注意
使用此功能时,存在潜在的安全威胁。由于不对回调参数进行验证,因此存在一定的不安全因素。每次使用参数之前,都应对参数的内容进行检查。有关详细信息,请参见脚本侵入概述。
|
请参见
分享到:
相关推荐
根据微信官方C#加解密库改写成适用于asp.net的回调模式验证 Cryptography.vb文件封装了AES加解密过程。 WXBizMsgCrypt.vb文件提供了用户接入企业微信的接口。 Sample.aspx.vb文件提供了回调验证的示例。
Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...
以下代码显示了如何在脚本中创建回调函数。服务器上的集线器类调用此函数将内容更新推送到每个客户端。对htmlEncode函数的可选调用显示了一种在将消息内容显示在页面中之前对其进行HTML编码的方法,以防止脚本注入。...
-这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加DisableControlBeforePostBack属性 - 回发之前是否禁用按钮,防止重复提交 - 默认为...
-这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加DisableControlBeforePostBack属性 - 回发之前是否禁用按钮,防止重复提交 - 默认为...