如果不满足条件,则强制验证组失败

时间:2010-08-19 00:25:42

标签: c# asp.net

我有一组文本框,需要将字段验证连接到它们。显然,它们都共享相同的验证组名称。我有一个服务条款的复选框,需要在点击提交按钮实际执行任何操作之前进行检查。

是否有一些C#代码会说如果未选中此框,则验证组失败?

或者有更好的方法吗?

编辑: 我添加了一个自定义验证器,并在我的代码后面使用它。不起作用。

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = false;
    if (cbxTerms.Checked)
        args.IsValid = true;
}

5 个答案:

答案 0 :(得分:0)

如果我这样做,我会使用JavaScript。页面加载时,将客户端事件处理程序附加到提交按钮。在处理程序内部检查是否选中了复选框,如果是,则返回true,否则返回false,取消提交。如果JavaScript被关闭那么也可以,因为你应该进行一些服务器端验证,因为人们也可以用其他方式来汇总表单。

答案 1 :(得分:0)

你可以做你上面所做的事情,但如果没有像那样检查那么返回

if (!cbxTerms.Checked) 
{requiredlabel.text="*";
return;}

您可以手动设置标签,告诉用户需要该字段

答案 2 :(得分:0)

斯科特米切尔有一篇关于此的文章。 http://www.4guysfromrolla.com/articles/121907-1.aspx http://www.4guysfromrolla.com/articles/092006-1.aspx

我认为这是一种略有不同的方法,但我前一段时间用它来处理类似的情况,它看起来效果很好。

答案 3 :(得分:0)

我想出了怎么做。我做了一个文本框,为它分配了一个req字段验证器。将文本框99999px放在屏幕上。在我的c#中我说如果选中复选框,则textbox.text =“”;在复选框中检查已更改的事件我说如果选中复选框,则表示textbox.text =“1”;。比我能找到的任何其他解决方案容易得多

编辑:最好使用隐藏字段。

答案 4 :(得分:0)

如果未选中复选框,您甚至可以阻止回发

Button1.Attributes["onclick"] =
        "if (!$get('" + CheckBox1.ClientID + "').checked){alert('Agree with us,plz!');return false;}";

为什么要做所有验证的东西,如果可以防止:)

或者如果你强迫团队无效,那么可以在客户端赢得你自己的验证:

function myStartUpValidation(group){
    var result=true;
    //Page_ClientValidate(group); to validate group
    for (var i = 0; i < Page_Validators.length; i++) { 
        if(Page_Validators[i].validationGroup==group){
        try{
            ValidatorValidate(Page_Validators[i]); //this forces validation in all groups
            if(Page_Validators[i].isvalid==false){result=false;}
            }catch(err){}
        }
    }
    return result;
}

或额外的验证员......