在后面的代码中逐步验证单个验证组

时间:2015-03-18 21:46:45

标签: c# asp.net .net validation

我有一个表单的三个部分,包含在jquery选项卡中。我希望每个选项卡都有自己的验证器,这样如果该表单上存在验证错误,则很容易看出用户需要重新执行哪些表单。我遇到的问题是当我尝试这样的事情时:

private void ValidateTabOne()
{
    Page.Validate("t1");
    if (!Page.IsValid)
        cvt1.IsValid = false;
}

private void ValidateTabTwo()
{
    Page.Validate("t2");
    if (!Page.IsValid)
        cvt2.IsValid = false;
}

protected void btnSave_Click(object sender, EventArgs e)
{
    ValidateTabOne();
    ValidateTabTwo();

    if (Page.IsValid)
    {
       //do the save
    }
}
如果t1组中的任何内容无效(无论t2组是否有效),

cvt2将始终无效,因为我首先验证(" t1")。

我仍然喜欢在后面的代码中执行此操作的方法。如何一次验证一个组,或者#34;重置"验证以排除Page.IsValid检查中的先前组?

我知道最坏的情况我可以写一个巨大的声明来检查IsValid的每个验证器,但更愿意使用验证组。

1 个答案:

答案 0 :(得分:0)

我现在发现这样做的最好方法是使用Page.GetValidators:

foreach (IValidator v in Page.GetValidators("t1"))
{
    if (!v.IsValid)
    {
        cvt1.IsValid = false;
        return;
    }
}
cvt1.IsValid = true;

事先我进行自定义验证,这只是检查以确保已经考虑了所有必需的验证。