我有一个带有按钮的asp.net页面.此按钮生成用户控件并将其插入页面,因此一个页面上可能存在许多控件.我需要验证生成的控件中是否存在某个动态生成的控件.
所以……页面有0到N个Control1.每个Control 1可以有0到N个Control2.当在页面上单击SaveButton时,我需要确保每个Control1中至少有一个Control2.
我目前有两种选择:
•为生成的每个控件动态插入CustomValidator,每个控件都将验证一个Control1.
•手动(使用jQuery)进行验证,从SaveButton.OnClientClick调用验证函数.
两者都以他们自己的方式草率 – 这就是为什么我和你们分享这个.我错过了简单的解决方案吗?
在此先感谢..(顺便说一句 – 任何包括.NET 3.5 SP1在内的公平游戏)
解决方法
嗯我喜欢digiguru建议的界面想法,但我会使用容器Control1上的接口而不是子控件,因为它似乎是代码生存的更合理的位置.继承我的看法:
public interface IValidatableControl { bool IsValidControl(); }
然后在Control1上实现它
public class Control1 : IValidatableControl { ... Other methods public bool IsValidControl() { foreach(object c in this.Controls) { if(c.GetType() == "Control2") return true; } return false; } }
可能有更好的方法来写这个,但它应该给你足够的想法开始.