首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在调用CreateChildControls之前设置控件的属性

在调用CreateChildControls之前设置控件的属性
EN

Stack Overflow用户
提问于 2009-03-04 11:30:19
回答 1查看 1.1K关注 0票数 1

我正在尝试在自定义web控件的CreateChildControls方法被调用之前设置该控件的属性。原因是,在那里执行了许多逻辑,这取决于所讨论的属性的值。我可以在HTML中使用显式的值直接设置该属性,它会被及时提取,但这对我没有任何用处,因为它需要基于服务器端变量。

棘手的一点是,EnsureChildControls方法是从控件的"CONTENTS“属性的getter中调用的,该属性对应于ASPX文件中的标记。例如:

代码语言:javascript
复制
<myControl>
<content>
...
</content>
</myControl>

据我所知,这反过来会触发被覆盖的CreateChildControls方法,并且在没有为我试图设置的属性设置正确的值的情况下执行逻辑。

我要解决的问题是,在页面的内容生命周期中,我可以在.NET访问我的控件的“ASP.NET”属性的getter之前设置属性吗?

我已经在父页面上尝试过OnPreInit,但在控件上使用CreateChildControls之后,仍然会遇到这种情况。我也不想改变控件本身,因为它是一个泛型控件,我不想在这种特殊情况下对它进行特殊处理。

有谁知道我可以在哪里设置我的属性值,这样它就会按照我想要实现的顺序来提取?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-05 14:16:29

根据我的测试,在这种情况下不修改web控件是不可能的。当解析web表单时,html中定义的所有控件都是在TemplateControl.FrameworkInitialize方法期间创建的,这包括调用任何内部属性的get访问器。不幸的是,FrameworkInitialize是在ProcessRequest期间调用的,它早于ProcessRequestMain,后者控制页面生命周期的其余部分。

您可以重写FrameworkInitialize,但只能在创建web控件之前或在设置该属性为时已晚之后才能访问该web控件。

我总是发现this image在尝试破译页面生命周期时非常有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/610169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档