2015-03-18 69 views
0

我有三个包含在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 
    } 
} 

cvt2永远是无效的,如果在T1组中的任何无效(不论是否T2组有效与否),因为我验证( “t1”)。

我仍然想在后面的代码中做到这一点。如何一次验证单个组,或者“重置”验证以排除Page.IsValid检查中的以前组?

我知道最坏的情况下,我可以写一个巨大的语句来检查每个验证器的IsValid,但宁愿使用验证组。

+0

也许您可以在回发中发送标签的ID,以便您知道应该在btnSave_Click处理程序中验证哪个组。 – Peter 2015-03-18 22:39:18

+0

如果我单独保存每个标签,这是一个好主意。不幸的是我想要一次保存所有的标签。因此,它仍然会按顺序验证每个选项卡(如上所述)并且不能正确验证。 – sebe 2015-03-19 14:25:46

回答

0

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

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

在此之前我做我的自定义的验证,这只是检查,以确保所有必需的验证已经是占了。