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

回到顶部