ASP.Net - 如何从其他WebControl添加HiddenField并对其进行维护?
我有一个WebControl,我想动态地添加一个HiddenField。ASP.Net - 如何从其他WebControl添加HiddenField并对其进行维护?
我试过下面的例子:Click here,但由于事实this.Page.Form在Page Init事件中为null,所以不起作用。
我试过以下,但该值永远保持:
HiddenField hd_IsDirty = new HiddenField(); protected override void OnInit(EventArgs e)
{
this.Controls.Add(hd_IsDirty);
hd_IsDirty.ID = "hd_IsDirty";
base.OnInit(e);
}
回答:
以下工作:
创建控制每一次(好像坏了!):
HiddenField hd_IsDirty = new HiddenField();
告诉页的控制需要了ControlState-的OnInit:
this.Page.RegisterRequiresControlState(this);
覆盖的ControlState方法:
protected override object SaveControlState() {
object obj = base.SaveControlState();
if (!string.IsNullOrEmpty(hd_IsDirty.Value))
{
if (obj != null)
{
return new Pair(obj, hd_IsDirty.Value);
}
else
{
return hd_IsDirty.Value;
}
}
else
{
return obj;
}
}
protected override void LoadControlState(object state)
{
if (state != null)
{
Pair p = state as Pair;
if (p != null)
{
base.LoadControlState(p.First);
hd_IsDirty.Value = (string)p.Second;
}
else
{
if (state is string)
{
hd_IsDirty.Value = (string)state;
}
else
{
base.LoadControlState(state);
}
}
}
}
回答:
看到这个answer这个question。
答案会告诉你如何动态地添加控件,这就是你正在尝试做的事情。
回答:
Theres总是动态控制占位符 - http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
以上是 ASP.Net - 如何从其他WebControl添加HiddenField并对其进行维护? 的全部内容, 来源链接: utcz.com/qa/259932.html