我正在构建一个自定义控件,它只是继承自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读取?
感谢您的帮助。
答案 0 :(得分:0)
我的解决方案是在OnPreRender事件中构建控件库验证表达式和其他属性。渲染太晚了,OnPreRender之前的任何内容都无法访问viewstate。