我有一种方法可以在页面上获取所有验证控件,然后为每个验证组创建验证摘要(因此开发人员不必忘记这样做,我会为他们这样做)。
我遇到的问题是,当我在下面调用 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
});
}
}
}
为了让事情更有趣......如果我调试代码,转发器在按钮点击事件后有0个项目...(因此它丢失了项目)。如果我不调试代码,它可以工作(记住它曾经拥有的项目)......