ASP.NET 客户端函数入口点扩展器

下载源代码

随着客户端技术的广泛使用,我们经常需要在 Page 类或用户控件中发射客户端函数调用。通常我们的做法是在 Load 或 PreRender 事件中通过 ClientScript 属性或 ScriptManager 类注册一小段客户端脚本来完成此项功能。这样做不是很方便,因为要做字符串拼接,另外传数据时经常需要用到隐藏字段或需要传多个参数。为此,我开发了一个扩展器,可在页面中声明式使用。这个扩展器的用法如下例所示(此示例用到了 jQuery): 

<%@ Register Assembly="Rhinoceros.Web.UI.Controls" Namespace="Rhinoceros.Web.UI.Controls"
    TagPrefix="rhinos" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">
        // Entry point function signature
        // first:      TargetControlID element
        // second:     indicates whether is post back
        // three:      Data, customer data, can be object JSON serializable, sets in tag is string, if is other type, 
sets in behind codes
// this: ClientContext, if not provided, is Target control function operate(targetTextBox, isPostBack, data) { Sys.Debug.trace("this:"); Sys.Debug.traceDump($(this)); Sys.Debug.trace(String.format("Is post back? {0}", isPostBack)); Sys.Debug.trace("Data:"); Sys.Debug.traceDump(data); $(targetTextBox).change(function () { Sys.Debug.trace(targetTextBox.value); }); } </script> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <h2> Test Client Entry Point Extender </h2> <asp:TextBox runat="server" ID="myTextBox" /> <rhinos:ClientEntryPointSetterExtender runat="server" ID="EntryPointSetter" TargetControlID="myTextBox" ClientEntryPoint="operate" Data="Some text." /> <asp:Button ID="Button1" runat="server" Text="Submit" /> </asp:Content>

它有两个必填属性:

  1. TargetControlID:要扩展的控件的 ID,可以是任何控件;
  2. ClientEntryPoint:客户端函数名,在页面加载后调用。

有两个可选属性:

  1. Data:传入入口函数中的数据,支持任何类型,传入入口函数时自动进行 JSON 反序列化(如果声明式设置,则其类型为 String)
  2. ClientContext: 入口函数的上下文(this 引用),如果不指定,则为扩展元素(在上例中为文本框)

注意

 此扩展器依赖于 ASP.NET AJAX 库和 AjaxToolket,必须在页面中声明 ScriptManager 控件并在应用程序中引用 AjaxToolkit 组件。

下载源代码

 

转载于:https://www.cnblogs.com/songb/archive/2013/04/15/3021805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值