我有一个带有2个UserControls (.ascx)的ASP.NET 2.0网页。每个UserControl包含一堆验证器。在页面上放置一个ValidationSummary将显示两个用户控件的所有验证错误。在每个UserControl中放置一个ValidationSummary将显示两个控件的所有错误两次。
我想要的是每个UserControl的ValidationSummary,只显示该UserControl上的错误。
我试图通过动态设置每个用户控件的验证器的ValidationGroup属性来解决这个问题。这样,每个validationsummary应该只显示其UserControl的错误。我使用了下面的代码:
foreach (Control ctrl in this.Controls)
{
if (ctrl is BaseValidator)
{
(ctrl as BaseValidator).ValidationGroup = this.ClientID;
}
}
ValidationSummary1.ValidationGroup = this.ClientID;但是,这似乎禁用了客户端和服务器端验证,因为在提交表单时不会进行验证。
帮助?
发布于 2008-09-26 12:27:11
如果使用ValidationGroups,则仅当导致回发的控件分配给同一ValidationGroup时,才会发生验证。
如果要使用单个控件回发,仍可以执行此操作,但需要显式调用Page.Validate方法。
Page.Validate(MyValidationGroup1);
Page.Validate(MyValidationGroup2);
if(Page.IsValid)
{
//do stuff
}建议:为什么不在用户控件上公开一个名为ValidationGroup的公共属性呢?在setter中,您可以显式地为每个验证器设置验证组。您也可以使用您的循环,但显式设置每个验证器会更有效。这可能会提高使用用户控件的代码的可读性。
发布于 2008-09-26 10:01:26
导致表单提交的控件(即按钮控件)必须与任何ValidationSummary和*验证程序控件属于同一验证组。
https://stackoverflow.com/questions/138514
复制相似问题