Search code examples
c#asp.netcaptcha

How can I add refresh Button to mscaptcha component?


How can I add refresh Button to mscaptcha component that change the code without refreshing the page by user ??

I am using:

<httpHandlers>
<add verb="GET" path="CaptchaImage.axd" type="MSCaptcha.CaptchaImageHandler, MSCaptcha"/>
</httpHandlers>

in Visual C#


Solution

  • That code that you wrote is on webconfig. On your page write this code:

      //ScriptManager is necessary for update panel
        <asp:ScriptManager ID="sm" runat="server">
        </asp:ScriptManager>
        <div>
            Please enter text
            <asp:TextBox ID="txtCaptcha" runat="server"></asp:TextBox>
        </div>
        // you should use update panel because you want just the captch refresh not all
        the page.
        <asp:UpdatePanel ID="up1" runat="server">
            <ContentTemplate>
                <div>
                    <div style="display: inline-block">
                        //its captcha control
                        <cc1:CaptchaControl ID="Captcha1" runat="server" CaptchaBackgroundNoise="Low" CaptchaLength="5"
                            CaptchaHeight="60" CaptchaWidth="200" CaptchaMinTimeout="5" CaptchaMaxTimeout="240"
                            FontColor="#D20B0C" NoiseColor="#B1B1B1" />
                    </div>
                    <div style="display: inline-block">
                        // its your refresh button
                        <asp:ImageButton ImageUrl="~/refreshpic.png" runat="server" CausesValidation="false" />
                    </div>
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
        <div>
            <div>
                <asp:CustomValidator ErrorMessage="Invalid." OnServerValidate="ValidateCaptcha" runat="server" />
            </div>
            <div>
                <asp:Button ID="btnSubmit" runat="server" Text="Register" />
            </div>
        </div>
    

    on code behinde you should write some code like this :

     protected void ValidateCaptcha(object sender, ServerValidateEventArgs e)
        {
            Captcha1.ValidateCaptcha(txtCaptcha.Text.Trim());
            e.IsValid = Captcha1.UserValidated;
            if (e.IsValid)
            {
              //do some thing
            }
        }