如何通过构造函数实现动态RegularExpressionValidator?

时间:2014-07-09 15:21:46

标签: c# asp.net regex constructor

我正在构建一个自定义控件,它只是继承自RegularExpressionValidator。在构造函数中,我需要能够看到控件的viewstate值是什么,以便我可以在构造期间使用该值来确定我需要使用哪个验证表达式。

问题是构造函数在调用时无法访问viewstate。由于调用构造函数的时间,至少viewstate始终为null。

我已经尝试覆盖render方法,但由于某种原因,即使控件可以访问viewstate,base.validationexpression总是会失败,因为它没有在构造函数中分配。

我所拥有的是一个查看视图状态的公共属性。

public NameType NameValidationType
        {
            get
            {
                return this.ViewState["NameType"] == null ? NameType.FirstName : (NameType)ViewState["NameType"];
            }

            set
            {
                this.ViewState["NameType"] = value;
            }
        }

调用构造函数时,此值始终为null。有没有办法在构造之前延迟构造函数的执行从viewstate读取?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的解决方案是在OnPreRender事件中构建控件库验证表达式和其他属性。渲染太晚了,OnPreRender之前的任何内容都无法访问viewstate。