我遇到了以下问题。
我们在我们的框架中有一些 web 控件,它们有一个属性 IsMustField。如果设置了此属性,则 CreateChildControls 方法会更改一些 CSS 并向控件添加 JS Validator。到目前为止,一切都很好。现在我正在尝试实现一个轻微的通用控件。它的一些文本字段在一种情况下使用时是必须字段,但在其他情况下则不是。决定,如果一个字段是必须的字段是在控件的 OnLoad 方法中完成的。
当我第一次打开页面时,一切正常。一旦我点击保存并完成回发,页面就会加载。IsMustField 字段的初始值设置为 ascx 中的值(在本例中为 true)。然后它第一次调用 ProcessPostData。这调用了 EnsureChildControls 方法,因此调用了我们控件的 CreateChildControls 方法。由于在此方法中附加了 CSS 和 JS 验证器,因此将添加它们,就好像控件是必须字段一样。之后,调用我的通用控件的 OnLoad 方法,并将 IsMustField 设置为 false。但是由于它已经调用了 CreateChildControls 方法,所以它不再具有预期的效果。
现在我的问题是:是否有可能以某种方式抑制 ProcessPostData 第一次尝试并仅第二次调用它,以便在我的通用控件将 IsMustField 设置为 false 之后加载控件?还是我必须寻找另一种解决方案。顺便说一句:我知道实现很糟糕......但我不能改变框架,所以我别无选择:)
我希望你们能帮助我
问候, crazy_crank