如何向mscaptcha组件添加刷新按钮?

时间:2014-09-17 08:59:07

标签: c# asp.net captcha

如何在没有用户刷新页面的情况下为mscaptcha组件添加更新代码的刷新按钮?

我正在使用:

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

在Visual C#中

1 个答案:

答案 0 :(得分:1)

您编写的代码是在Web配置上。在您的页面上写下以下代码:

  //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>

在你背后的代码上你应该写一些这样的代码:

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