Events
CaptchaValidate
The event CaptchaValidate is fired before the control is validated. This event allows you to execute server-side code on RadCaptcha validation, to cancel the default validation mechanism of the captcha control and to specify your own logic for validating the RadCaptcha. The CaptchaValidateEventArgs object of the CaptchaValidate event exposes the following properties:
CancelDefaultValidation - specifies whether the default validation of RadCaptcha will proceed after the event is fired.
IsValid - determines whether the RadCaptcha validation is successful, should be used if CancelDefaultValidation is set to true.
The following example demonstrates a RadCaptcha that is validated if the sum of the digits, displayed in the code, is entered in the input. For this purpose the property CancelDefaultValidation is set to true and the new validation logic is implemented in the CaptchaValidate event handler. Finally, IsValid is set according to the result of the validation.
<telerik:RadCaptcha ID="RadCaptcha1" runat="server" ValidationGroup="CaptchaValidation" ErrorMessage="Page not valid. The code you entered is not valid."
CaptchaTextBoxCssClass="textBox" OnCaptchaValidate="RadCaptcha1_CaptchaValidate">
<CaptchaImage ImageCssClass="imageClass" BackgroundColor="#dff3ff" TextColor="Black"
RenderImageOnly="true" />
</telerik:RadCaptcha>
Enter the sum of the digits in the validation code <br />(enter 0 if there are not any):<br />
<asp:TextBox ID="ValdiationCodeDigitsSum" runat="server" />
<asp:Button ID="btnValidate" runat="server" Text="Verify Code" ValidationGroup="CaptchaValidation" />
private string oldCaptchaCode;
protected void Page_Init(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["CaptchaCode"] = RadCaptcha1.CaptchaImage.Text;
}
}
protected void RadCaptcha1_CaptchaValidate(object sender, CaptchaValidateEventArgs e)
{
e.CancelDefaultValidation = true;
string validationCodeNumbers = Regex.Replace(Session["CaptchaCode"].ToString(), "[^0-9]", "");
int digitsSum = 0;
foreach (char c in validationCodeNumbers)
{
digitsSum += Convert.ToInt32(c.ToString());
}
int enteredDigitsSum = 0;
e.IsValid = Int32.TryParse(ValdiationCodeDigitsSum.Text, out enteredDigitsSum) && digitsSum == enteredDigitsSum;
if (e.IsValid)
{
RadCaptcha1.CaptchaImage.ImageCssClass = "imgCorrectCode";
}
else
{
RadCaptcha1.CaptchaImage.ImageCssClass = "imgWrongCode";
}
Session["CaptchaCode"] = RadCaptcha1.CaptchaImage.Text;
}
Private oldCaptchaCode As String
Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
If Not IsPostBack Then
Session("CaptchaCode") = RadCaptcha1.CaptchaImage.Text
End If
End Sub
Protected Sub RadCaptcha1_CaptchaValidate(sender As Object, e As CaptchaValidateEventArgs) Handles RadCaptcha1.CaptchaValidate
e.CancelDefaultValidation = True
Dim validationCodeNumbers As String = Regex.Replace(Session("CaptchaCode").ToString(), "[^0-9]", "")
Dim digitsSum As Integer = 0
For Each c As Char In validationCodeNumbers
digitsSum += Convert.ToInt32(c.ToString())
Next
Dim enteredDigitsSum As Integer = 0
e.IsValid = Int32.TryParse(ValdiationCodeDigitsSum.Text, enteredDigitsSum) AndAlso digitsSum = enteredDigitsSum
If e.IsValid Then
RadCaptcha1.CaptchaImage.ImageCssClass = "imgCorrectCode"
Else
RadCaptcha1.CaptchaImage.ImageCssClass = "imgWrongCode"
End If
Session("CaptchaCode") = RadCaptcha1.CaptchaImage.Text
End Sub