ClientScriptManager.RegisterForEventValidation 方法

定義

註冊一個事件參考以進行驗證。

多載

名稱 Description
RegisterForEventValidation(String, String)

註冊一個事件參考以供驗證,並以獨特的控制 ID 及代表產生事件的客戶端控制項的事件參數。

RegisterForEventValidation(String)

註冊一個事件參考以供驗證,並以代表產生事件的用戶端控制的唯一控制 ID。

RegisterForEventValidation(PostBackOptions)

註冊一個事件參考以進行驗證。PostBackOptions

RegisterForEventValidation(String, String)

註冊一個事件參考以供驗證,並以獨特的控制 ID 及代表產生事件的客戶端控制項的事件參數。

public:
 void RegisterForEventValidation(System::String ^ uniqueId, System::String ^ argument);
public void RegisterForEventValidation(string uniqueId, string argument);
member this.RegisterForEventValidation : string * string -> unit
Public Sub RegisterForEventValidation (uniqueId As String, argument As String)

參數

uniqueId
String

一個代表產生事件的用戶端控制的獨特 ID。

argument
String

事件參數與客戶端事件一起傳遞。

例外狀況

方法在方法之前 Render(HtmlTextWriter) 被呼叫。

範例

以下程式碼範例示範使用該 RegisterForEventValidation 方法與方法 ValidateEvent 來註冊回調以供驗證,並驗證回調是否來自頁面。 為了改進範例中所示的驗證,你可以修改驗證 argument 參數,包含使用者特定的資訊,例如身份或角色

<%@ Page Language="C#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server" >
        
    string _cbMessage = "";
    // Define method that processes the callbacks on server.
    public void RaiseCallbackEvent(String eventArgument)
    {
        try
        {
            Page.ClientScript.ValidateEvent(button1.UniqueID, this.ToString());
            _cbMessage = "Correct event raised callback.";
        }
        catch (Exception ex)
        {
            _cbMessage = "Incorrect event raised callback.";
        }
    }

    // Define method that returns callback result.
    public string GetCallbackResult()
    {
        return _cbMessage;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ClientScriptManager cs = Page.ClientScript;
            String cbReference = cs.GetCallbackEventReference("'" +
                Page.UniqueID + "'", "arg", "ReceiveServerData", "",
                "ProcessCallBackError", false);
            String callbackScript = "function CallTheServer(arg, context) {" +
                cbReference + "; }";
            cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer",
                callbackScript, true);
        }
    }
    protected override void Render(HtmlTextWriter writer)
    {
        Page.ClientScript.RegisterForEventValidation(button1.UniqueID, this.ToString());
        base.Render(writer);
    }
    
</script>

<script type="text/javascript">
var value1 = new Date();
function ReceiveServerData(arg, context)
{
    Message.innerText = arg;
    Label1.innerText = "Callback completed at " + value1;
    value1 = new Date();
}
function ProcessCallBackError(arg, context)
{
    Message.innerText = 'An error has occurred.';
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>CallBack Event Validation Example</title>
</head>
<body>
    <form id="Form1" runat="server">
    <div>
      Callback result: <span id="Message"></span>
      <br /> <br />
      <input type="button"
             id="button1" 
             runat="server"
             value="ClientCallBack" 
             onclick="CallTheServer(value1, null )"/>
      <br /> <br />
      <asp:Label id="Label1" runat="server"/>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Dim _cbMessage As String = ""
    ' Define method that processes the callbacks on server.
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        
        Try
            Page.ClientScript.ValidateEvent(button1.UniqueID, Me.ToString())
            _cbMessage = "Correct event raised callback."
            
        Catch ex As Exception
            _cbMessage = "Incorrect event raised callback."

        End Try
        
    End Sub

    ' Define method that returns callback result.
    Public Function GetCallbackResult() _
    As String Implements _
    System.Web.UI.ICallbackEventHandler.GetCallbackResult

        Return _cbMessage
        
    End Function
    
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        If (Not IsPostBack) Then
            Dim cs As ClientScriptManager = Page.ClientScript
            Dim cbReference As String = cs.GetCallbackEventReference("'" & _
                Page.UniqueID & "'", "arg", "ReceiveServerData", "", _
                "ProcessCallBackError", False)
            Dim callbackScript As String = "function CallTheServer(arg, context) {" & _
                cbReference & "; }"
            cs.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", _
                callbackScript, True)
            
        End If
    End Sub
    
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        
        Page.ClientScript.RegisterForEventValidation(button1.UniqueID, Me.ToString())
        MyBase.Render(writer)
    End Sub
    
</script>

<script type="text/javascript">
var value1 = new Date();
function ReceiveServerData(arg, context)
{
    Message.innerText = arg;
    Label1.innerText = "Callback completed at " + value1;
    value1 = new Date();
}
function ProcessCallBackError(arg, context)
{
    Message.innerText = 'An error has occurred.';
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>CallBack Event Validation Example</title>
</head>
<body>
    <form id="Form1" runat="server">
    <div>
      Callback result: <span id="Message"></span>
      <br /> <br />
      <input type="button"
             id="button1" 
             runat="server"
             value="ClientCallBack" 
             onclick="CallTheServer(value1, null )"/>
      <br /> <br />
      <asp:Label id="Label1" runat="server"/>
    </div>
    </form>
</body>
</html>

以下程式碼範例示範使用此 RegisterForEventValidation 方法註冊回調以供驗證。

<%@ Page EnableEventValidation="true" Language="C#"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Register an option for event validation</title>
    <script runat="server">
        protected override void Render(HtmlTextWriter writer)
        {
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 1");
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 2");
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 3");
            // Uncomment the line below when you want to specifically register the option for event validation.
            // ClientScript.RegisterForEventValidation("DropDownList1", "Is this option registered for event validation?");
            base.Render(writer);
        }
    </script>
    <script type="text/javascript">
        function Initialize()
        {
            var oOption = document.createElement("OPTION");
            document.all("DropDownList1").options.add(oOption);
            oOption.innerText = "This is Option 1";            
            oOption = document.createElement("OPTION");            
            document.all("DropDownList1").options.add(oOption);
            oOption.innerText = "This is Option 2";
            oOption = document.createElement("OPTION");                
            document.all("DropDownList1").options.add(oOption); 
            oOption.innerText = "This is Option 3";
            oOption = document.createElement("OPTION");                
            document.all("DropDownList1").options.add(oOption); 
            oOption.innerText = "Is this option registered for event validation?";
        }
    </script>
</head>
<body onload="Initialize();">
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
        <asp:Button ID="Button1" runat="server" Text="Postback to server for validation" />
    </div>
    </form>
</body>
</html>
<%@ Page EnableEventValidation="true" Language="VB"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Register an option for event validation</title>
    <script runat="server">
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 1")
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 2")
            ClientScript.RegisterForEventValidation("DropDownList1", "This is Option 3")
            ' Uncomment the line below when you want to specifically register the option for event validation.
            ' ClientScript.RegisterForEventValidation("DropDownList1", "Is this option registered for event validation?")
            MyBase.Render(writer)
        End Sub
    </script>
    <script type="text/javascript">
        function Initialize()
        {
            var oOption = document.createElement("OPTION");
            document.all("DropDownList1").options.add(oOption);
            oOption.innerText = "This is Option 1";            
            oOption = document.createElement("OPTION");            
            document.all("DropDownList1").options.add(oOption);
            oOption.innerText = "This is Option 2";
            oOption = document.createElement("OPTION");                
            document.all("DropDownList1").options.add(oOption); 
            oOption.innerText = "This is Option 3";
            oOption = document.createElement("OPTION");                
            document.all("DropDownList1").options.add(oOption); 
            oOption.innerText = "Is this option registered for event validation?";
        }
    </script>
</head>
<body onload="Initialize();">
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server">
        </asp:DropDownList>
        <asp:Button ID="Button1" runat="server" Text="Postback to server for validation" />
    </div>
    </form>
</body>
</html>

另請參閱

適用於

RegisterForEventValidation(String)

註冊一個事件參考以供驗證,並以代表產生事件的用戶端控制的唯一控制 ID。

public:
 void RegisterForEventValidation(System::String ^ uniqueId);
public void RegisterForEventValidation(string uniqueId);
member this.RegisterForEventValidation : string -> unit
Public Sub RegisterForEventValidation (uniqueId As String)

參數

uniqueId
String

一個代表產生事件的用戶端控制的獨特 ID。

範例

以下範例說明如何使用該 RegisterForEventValidation 方法與方法 ValidateEvent 來註冊回調以供驗證,以及如何驗證回調是否來自頁面。

<%@ Page Language="C#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server" >
        
    string _cbMessage = "";
    // Define method that processes the callbacks on server.
    public void RaiseCallbackEvent(String eventArgument)
    {
        try
        {
            Page.ClientScript.ValidateEvent(button1.UniqueID);
            _cbMessage = "Correct event raised callback.";
        }
        catch (Exception ex)
        {
            _cbMessage = "Incorrect event raised callback.";
        }
    }

    // Define method that returns callback result.
    public string GetCallbackResult()
    {
        return _cbMessage;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ClientScriptManager cs = Page.ClientScript;
            String cbReference = cs.GetCallbackEventReference("'" +
                Page.UniqueID + "'", "arg", "ReceiveServerData", "",
                "ProcessCallBackError", false);
            String callbackScript = "function CallTheServer(arg, context) {" +
                cbReference + "; }";
            cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer",
                callbackScript, true);
        }
    }
    protected override void Render(HtmlTextWriter writer)
    {
        Page.ClientScript.RegisterForEventValidation(button1.UniqueID);
        base.Render(writer);
    }
    
</script>

<script type="text/javascript">
    var value1 = new Date();
    function ReceiveServerData(arg, context) {
        Message.innerText = arg;
        Label1.innerText = "Callback completed at " + value1;
        value1 = new Date();
    }
    function ProcessCallBackError(arg, context) {
        Message.innerText = 'An error has occurred.';
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>CallBack Event Validation Example</title>
</head>
<body>
    <form id="Form1" runat="server">
    <div>
      Callback result: <span id="Message"></span>
      <br /> <br />
      <input type="button"
             id="button1" 
             runat="server"
             value="ClientCallBack" 
             onclick="CallTheServer(value1, null )"/>
      <br /> <br />
      <asp:Label id="Label1" runat="server"/>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Dim _cbMessage As String = ""
    ' Define method that processes the callbacks on server.
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        
        Try
            Page.ClientScript.ValidateEvent(button1.UniqueID)
            _cbMessage = "Correct event raised callback."
            
        Catch ex As Exception
            _cbMessage = "Incorrect event raised callback."

        End Try
        
    End Sub

    ' Define method that returns callback result.
    Public Function GetCallbackResult() _
    As String Implements _
    System.Web.UI.ICallbackEventHandler.GetCallbackResult

        Return _cbMessage
        
    End Function
    
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        If (Not IsPostBack) Then
            Dim cs As ClientScriptManager = Page.ClientScript
            Dim cbReference As String = cs.GetCallbackEventReference("'" & _
                Page.UniqueID & "'", "arg", "ReceiveServerData", "", _
                "ProcessCallBackError", False)
            Dim callbackScript As String = "function CallTheServer(arg, context) {" & _
                cbReference & "; }"
            cs.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", _
                callbackScript, True)
            
        End If
    End Sub
    
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        
        Page.ClientScript.RegisterForEventValidation(button1.UniqueID)
        MyBase.Render(writer)
    End Sub
    
</script>

<script type="text/javascript">
var value1 = new Date();
function ReceiveServerData(arg, context)
{
    Message.innerText = arg;
    Label1.innerText = "Callback completed at " + value1;
    value1 = new Date();
}
function ProcessCallBackError(arg, context)
{
    Message.innerText = 'An error has occurred.';
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>CallBack Event Validation Example</title>
</head>
<body>
    <form id="Form1" runat="server">
    <div>
      Callback result: <span id="Message"></span>
      <br /> <br />
      <input type="button"
             id="button1" 
             runat="server"
             value="ClientCallBack" 
             onclick="CallTheServer(value1, null )"/>
      <br /> <br />
      <asp:Label id="Label1" runat="server"/>
    </div>
    </form>
</body>
</html>

備註

欲了解更多資訊與範例,請參閱該 RegisterForEventValidation 方法。

另請參閱

適用於

RegisterForEventValidation(PostBackOptions)

註冊一個事件參考以進行驗證。PostBackOptions

public:
 void RegisterForEventValidation(System::Web::UI::PostBackOptions ^ options);
public void RegisterForEventValidation(System.Web.UI.PostBackOptions options);
member this.RegisterForEventValidation : System.Web.UI.PostBackOptions -> unit
Public Sub RegisterForEventValidation (options As PostBackOptions)

參數

options
PostBackOptions

一個 PostBackOptions 指定如何產生客戶端 JavaScript 以啟動回傳事件的物件。

備註

欲了解更多資訊與範例,請參閱該 RegisterForEventValidation 方法。

另請參閱

適用於