2009-06-11 70 views
11

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

当用户按下“全部执行”按钮时,我希望页面触发所有三个验证组。按钮本身可以绑定到单个组或未标记的组。据我所知,它不能绑定到多个组。

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

回答

5

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

+7

对于JS,你可以调用Page_ClientValidate(),这将在页面上触发所有组验证。 – Ahmed 2010-02-14 15:01:57

12

调用验证方法为每个验证组内的单个按钮的点击处理程序:

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

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

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

编辑添加:isValidTest变量不是必需的。根据文档:

注意,当你调用Validate 方法,IsValid属性反映 所有群体的有效性验证 至今。

2

呼叫Page.Validate()这将验证所有验证..