动态验证摘要

时间:2012-08-22 13:55:25

标签: asp.net validation

我有一种方法可以在页面上获取所有验证控件,然后为每个验证组创建验证摘要(因此开发人员不必忘记这样做,我会为他们这样做)。

我遇到的问题是,当我在下面调用 AddValidatorSummaries()方法时,它会导致页面上的其他问题(转发器不会丢失其数据源并且不显示) 。任何人都可以通过以下方法看到奇怪的东西吗?

仅供参考, FindAllControls 方法将贯穿容器中的所有控件并返回它,如果它属于某种类型。

    protected void Page_Init(object sender, EventArgs e)
    {
        AddValidatorSummaries();
    }

    private void AddValidatorSummaries()
    {
        if (Page is PageBase)
        {
            List<BaseValidator> validators = (Page as PageBase).FindAllControls<BaseValidator>(Page);
            List<string> validationGroups = validators.Select(v => v.ValidationGroup).Distinct().ToList();

            foreach (string validationGroup in validationGroups)
            {
                panelValidatorSummariesContainer.Controls.Add(new ValidationSummary()
                                                                {
                                                                    ID = String.Format("validationSummary{0}", validationGroup),
                                                                    DisplayMode = ValidationSummaryDisplayMode.BulletList,
                                                                    EnableClientScript = true,
                                                                    ShowMessageBox = true,
                                                                    ShowSummary = false,
                                                                    HeaderText = "Some information was missing from the page",
                                                                    ValidationGroup = validationGroup
                                                                });
            }
        }
    }

UPDATE:

为了让事情更有趣......如果我调试代码,转发器在按钮点击事件后有0个项目...(因此它丢失了项目)。如果我不调试代码,它可以工作(记住它曾经拥有的项目)......

0 个答案:

没有答案