首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态设置ValidationGroup

如何动态设置ValidationGroup
EN

Stack Overflow用户
提问于 2008-09-26 09:48:38
回答 2查看 7.9K关注 0票数 2

我有一个带有2个UserControls (.ascx)的ASP.NET 2.0网页。每个UserControl包含一堆验证器。在页面上放置一个ValidationSummary将显示两个用户控件的所有验证错误。在每个UserControl中放置一个ValidationSummary将显示两个控件的所有错误两次。

我想要的是每个UserControl的ValidationSummary,只显示该UserControl上的错误。

我试图通过动态设置每个用户控件的验证器的ValidationGroup属性来解决这个问题。这样,每个validationsummary应该只显示其UserControl的错误。我使用了下面的代码:

代码语言:javascript
复制
foreach (Control ctrl in this.Controls)
{
    if (ctrl is BaseValidator)
    {
        (ctrl as BaseValidator).ValidationGroup = this.ClientID;
    }
}
ValidationSummary1.ValidationGroup = this.ClientID;

但是,这似乎禁用了客户端和服务器端验证,因为在提交表单时不会进行验证。

帮助?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-26 12:27:11

如果使用ValidationGroups,则仅当导致回发的控件分配给同一ValidationGroup时,才会发生验证。

如果要使用单个控件回发,仍可以执行此操作,但需要显式调用Page.Validate方法。

代码语言:javascript
复制
Page.Validate(MyValidationGroup1);
Page.Validate(MyValidationGroup2);
if(Page.IsValid)
{
    //do stuff
}

建议:为什么不在用户控件上公开一个名为ValidationGroup的公共属性呢?在setter中,您可以显式地为每个验证器设置验证组。您也可以使用您的循环,但显式设置每个验证器会更有效。这可能会提高使用用户控件的代码的可读性。

票数 2
EN

Stack Overflow用户

发布于 2008-09-26 10:01:26

导致表单提交的控件(即按钮控件)必须与任何ValidationSummary和*验证程序控件属于同一验证组。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/138514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档