如何在 ASP.NET 网页中实现回调

如何:在 ASP.NET 网页中实现回调

 

在客户端回调中,客户端脚本函数会向 ASP.NET 网页发送请求,该网页随后会运行其正常生命周期的简化版本以处理该回调。若要确保回调事件源于预期的用户界面 (UI),可以对回调进行验证。在回调验证中,应先在网页呈现过程中注册要验证的事件,然后在回调过程中对该事件进行验证。有关回调的概述,请参见在 ASP.NET 网页中不经过回发而实现客户端回调

实现 ICallBackEventHandler 接口

  1. 对于单文件页或用户控件,可使用该页中的 @ Implements 指令实现 ICallbackEventHandler 接口,如下面的示例所示。

    Visual Basic
    <%@ Page Language="VB" %>
    <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
    <%@ Page Language="C#" %>
    <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
    Note注意

    如果使用的是代码隐藏页模型,则可以实现分部类的 ICallbackEventHandler 接口。

  2. 实现 ICallbackEventHandler 接口的 RaiseCallbackEvent 方法。RaiseCallbackEvent 方法采用表示事件参数的单个参数,如下面的示例所示。

    Visual Basic
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
    
    End Sub
    public void RaiseCallbackEvent(String eventArgument)
    {
        
    }
  3. 实现 ICallbackEventHandler 接口的 GetCallbackResult 方法。GetCallbackResult 方法不使用任何参数,它将返回一个表示回调结果的字符串。在下面的示例中,将返回一个名为 returnValue 的字符串。

    Visual Basic
    Public Function GetCallbackResult() _
    As String Implements _
    System.Web.UI.ICallbackEventHandler.GetCallbackResult
    
        Return returnValue
    
    End Function
    public String GetCallbackResult()
    {
        return returnValue;
    }

注册回调以进行事件验证

  • 重写 Page 类的 Render 方法,并使用 ClientScriptManager 类的 RegisterForEventValidation 方法注册要验证的事件。可以使用 Page 类的 ClientScript 属性获取对 ClientScriptManager 类的引用。在下面的示例中,将注册一个名为 Callback1 的回调以进行事件验证。

    Visual Basic
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        
        Page.ClientScript.RegisterForEventValidation("ClientCallback1")
        MyBase.Render(writer)
        
    End Sub
    protected override void Render(HtmlTextWriter writer)
    {
        Page.ClientScript.RegisterForEventValidation("ClientCallback1");
        base.Render(writer);
    }

验证回调并返回回调结果

  • RaiseCallbackEvent 方法中,使用 ClientScriptManager 类的 ValidateEvent 方法来验证事件。使用的方法签名应与在注册要验证的事件时使用的方法签名相同。在下面的示例中,使用的是采用一个参数的方法签名。

    Visual Basic
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            Page.ClientScript.ValidateEvent("ClientCallback1")
            ' Callback logic goes here.
            returnValue = "callback result"
            
        Catch
            ' Failed callback validation logic.
        End Try
    
    End Sub
    public void RaiseCallbackEvent(String eventArgument)
    {
        try
        {
            Page.ClientScript.ValidateEvent("ClientCallback1");
            // Callback logic goes here.
            returnValue = "callback result";
        }
        catch
        {
            // Failed callback validation logic.
        } 
    }

    如果验证通过,则代码将继续使用回调事件逻辑。在 RaiseCallbackEvent 方法完成后,将调用 GetCallbackResult 方法,以便将回调结果以字符串的形式返回给客户端脚本函数。

    有关创建和实现客户端脚本函数以支持客户端回调的更多信息,请参见在 ASP.NET 网页中不经过回发而实现客户端回调具有验证实现的客户端回调示例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值