使用单个按钮触发多个验证组?

时间:2009-06-11 22:53:43

标签: c# asp.net validation

假设页面TestPage.aspx有两个控件。第一个控件是一个地址控件,它有一个名为“AddressGroup”的验证组。该组包含几个验证控件,这些控件在该控件的验证摘要中包含在内。第二个控件是信用卡控件,并有一个名为“CreditCardGroup”的验证组。它还有几个验证器和一个摘要来显示结果。为了解决这个问题,页面上有一些随机控件,它们还有与第三个ValidatorSummary控件绑定的验证器。

当用户按下“全部操作”按钮时,我希望该页面触发所有三个验证组。按钮本身可以绑定到单个组或未标记的组。据我所知,它不能与多个群体联系在一起。

解决方案不是从控件中提取验证,因为这会降低在单独控件中使用它们的价值。谢谢你的想法。

3 个答案:

答案 0 :(得分:12)

在按钮的单击处理程序中单独调用每个验证组的Validate方法:

bool isValidTest = false;
Validate("AddressGroup");
isValidTest = IsValid;
Validate("CreditCardGroup");
isValidTest &= IsValid;
// etc.
if (!isValidTest) return;

您可能遇到的下一个问题是ValidationSummary控件链接到单个验证组。我发现显示多个组的所有错误消息(不走控制树)的唯一方法是使用多个ValidationSummary控件。

使用用户控件,您可能希望让Validate方法对其包含的所有控件执行验证并显示自己的摘要。

编辑添加:不需要isValidTest变量。根据文件:

  

请注意,当您调用Validate时   方法,IsValid属性反映   验证所有组的有效性   到目前为止。

答案 1 :(得分:5)

您是在谈论客户端还是服务器端验证? Jamie的答案是服务器端的问题,但是对于客户端验证,您可能需要编写自己的JS函数,该函数将触发所有三个组的一致性验证。

答案 2 :(得分:2)

在服务器端调用Page.Validate(),它将验证所有验证器..