如何在按钮单击中以编程方式失败页面验证?

时间:2015-02-26 18:33:42

标签: c# asp.net

在我的按钮单击中,如果符合某个条件,我想使页面验证失败。问题是Page.IsValid是只读的。

这就是我在按下按钮时尝试的内容:

    protected override void CreateChildControls()
    {
        base.CreateChildControls(container);

        MyBtn += MyBtn_Click;
        MyBtn += MyBtn_Click2; // Cannot move this
    }

    protected void MyBtn_Click(object sender, System.EventArgs e)
    {
        CaptchaControl.Validate();
        if (!CaptchaControl.IsValid)
        {
            Page.IsValid = false; // Error because read-only
            // Stop before running MyBtn_Click2!
        }
    }

如果我的验证码验证失败,我想在它开始运行第二次点击事件之前立即返回页面。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

我个人会使用隐藏字段并根据需要进行标记。在其中放置一个默认值,如果验证码失败,请删除该值并重新验证页面。

if (!CaptchaControl.IsValid)
{
    myHiddenField.Value = null;
    Page.Validate();
}

如果myBtn2控件使用if (Page.IsValid)执行代码,则隐藏的必填字段应为空,现在无效。