문제

ASP.NET 플러그인 및 컨트롤을 사용하고 있습니다. recaptcha. 웹 양식의 제출 버튼이 ValidationGroup에 있지 않으면 컨트롤을 성공적으로 수행 할 수 있습니다. recaptcha 컨트롤에 대한 ValidationGroup 속성은 없습니다.

웹 양식에 검증 그룹이있을 때 recaptcha 컨트롤이 작동하도록하기 위해이 솔루션이나 솔루션으로 성공한 사람이 있습니까?

도움이 되었습니까?

해결책

recaptcha asp.net 플러그인은 ASP.NET 1.1과 거꾸로 호환되도록 작성되었습니다. ValidationGroup 개념 (ASP.NET 2.0의 새로운)은 지원되지 않습니다. 그러나 플러그인은 함께 제공됩니다 다운로드 가능한 소스 코드, 따라서 직접 수정하여 지원할 수 있습니다 ValidationGroup.

ASP.NET 2.0에서 유효성 검사기는 상속해야합니다 BaseValidator 그리고 구현 IValidator, 이는 RECAPTCHACONTROL 유형을 상속하기 위해 변경해야합니다. BaseValidator 대신에 WebControl. 그런 다음 정의 된 모든 방법과 속성을 구현하려면 코드를 약간 수정해야합니다. BaseValidator. 그런 다음 대신 페이지 에서이 새로운 컨트롤을 사용할 수 있으며 이제 지원합니다. ValidationGroup.

다른 팁

몇몇 다른 코드가있는 몇몇 다른 사람들의 의견을 확장 할 것이라고 생각했습니다 ...

<recaptcha:RecaptchaControl ID="RecaptchaControl" runat="server" />

<asp:CustomValidator ID="RecaptchaValidator" runat="server" OnServerValidate="RecaptchaValidator_ServerValidate" ErrorMessage="Recaptcha input invalid." ValidationGroup="SomeValidationGroup" />

그리고 뒤에 코드 ...

protected void RecaptchaValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
    this.RecaptchaControl.Validate();
    e.IsValid = this.RecaptchaControl.IsValid;
}

누구든지 더 간단한 방법을 생각할 수 있습니까? onservervalidate 사용에 대한 생각에 대해 Vidalik에게 Kudos.

CustomValidator를 추가하고 recaptcha 데이터를 검증하는 onservervalidate를 구현할 수 있습니다. CustomValidator를 ValidatorGroup에 할당 할 수 있습니다.

이것은 나를 위해 일했다 ...

  1. 올바른 유효성 검사 그룹으로 사용자 정의 유효성 검사기를 추가하십시오.

  2. 그것의 ServerValidate 메소드 호출 ..

    recaptcha.Validate();
    
  3. 그런 다음 메인 처리 전에 다음과 같이 확인하십시오 ...

    if (page.isvalid && recaptcha.isvalid) {respose.write ( "valid"); }

HTH.

remotecuk제안은 사용자 정의 유효성 검사기를 추가하지 않고 저에게 효과적이었습니다.

protected void button_onclick(object sender, EventArgs e){
    recaptcha.Validate();
    if(!Page.IsValid && recaptcha.IsValid){
        lblError.Text = "Please check your captcha entry";
    } else {
        //do your thing
    }
}

클라이언트 측면에 필요한 유효성 검사를 수행하고 recaptcha 소스 코드를 변경하지 않고 내 양식에 CustomValidator를 추가하고 입력 텍스트 필드를 검증하기 위해 JavaScript 기능을 만들었습니다.

<asp:CustomValidator ID="reqRecaptcha" runat="server" ClientValidationFunction="validateRecaptcha" Text="Required"></asp:CustomValidator>

찾기 위해 ID 생성 된 입력 필드 중 나는 페이지의 소스 코드를보고 입력 필드가 항상임을 알았습니다.recaptcha_response_field. (내가 틀렸다면 저를 바로 잡으십시오) 이것을 알고, 나는 JavaScript를 만들 수있었습니다 (jQuery와 사용자 정의 기능을 사용하여 컨트롤의 유효성을 확인).

    function validateRecaptcha(sender, args) {
        args.IsValid = isFieldValid("input[id$='recaptcha_response_field']");
    }

참고 : 개발자가 Recaptcha 컨트롤의 출력을 변경하는 경우 변경 사항을 알지 못해 유효성 검사기가 작동합니다.

Altairis Web UI 툴킷의 일부인 Recaptchaimage 및 Recaptchavalidator 컨트롤을 참조하십시오. http://altairiswebui.codeplex.com/

상당히 괜찮은 ASP.NET 표준을 포함하는 오픈 소스 웹 구성 요소 세트입니다 (저자라고 말할 수 있다면 :-) 웹 양식에 대한 recaptcha의 구현.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top