可能看起来像一个愚蠢的标题,因为如果你想维护ViewState
,你不应该在Page_Init中添加动态控件,但我想不出解决问题的更好方式。Page_Init动态添加控件来自页面_Init
我有类似以下的类:
public class WebCustomForm : WebControl, IScriptControl
{
internal CustomRender Content
{
get
{
object content = this.Page.Session[this.SESSION_CONTENT_TRACKER];
return content as CustomRender;
}
private set
{
this.Page.Session[this.SESSION_CONTENT_TRACKER] = value;
}
}
}
CustomRender
是实现了Itemplate,我使用抽象类的自包含CustomForms模块我写作的中间来的。
在保存WebCustomForm
的页面的Page_Init
上,我通过将相关ID传递给它来初始化控件。然后在WebCustomForm
的覆盖OnInit
我称之为实例化的CustomRender
控制这是当前活动:
if (this.Content != null)
{
this.Content.InstantiateIn(this);
}
的问题是,我CustomRender
控制需要改变CustomRender
控制WebCustomForm
的能力。但是当CustomRender触发的事件发生时,Page_Init事件显然已经消失。所以,我的问题是,如何从动态添加的控件中更改WebCustomForm
的内容?
我看到它的方式,我有三种选择:
- 我的
CustomRender
控制 分离出来,变成自己独立 控制和基本都有每控制一个aspx 页面和处理 事件自己(虽然 我希望只是做一个控制 我放在页面上,忘了) - 我不使用事件,只是保持 请求当前页面,但 不同的请求参数
- 我回到绘图板与 什么更好的建议任何人都可以 给我。
因为我的事件将在InitComplete事件之后触发。 – GenericTypeTea 2010-05-18 09:00:49