在我的主 .aspx 页面中,我有一个占位符,它在其中动态注册了两种类型的用户控件。
case "1":
var control = (ControlType)LoadControl("~/PathToControl.ascx");
control.Property = value;
control.Initialize();
placeholder.controls.add(control);
break;
case "2":
var control1 = (ControlType)LoadControl("~/PathToControl1.ascx");
control1.Property = value;
control1.Initialize();
placeholder.controls.add(control1);
break;
每个控件都有一些用户控件。
现在,在主页中,我有一个提交按钮,我想从上面的自定义控件中获取每个用户 coltrol 的值。我试图获取占位符的控件,但回发后的占位符为空。
if(placeholder.Controls.count>0){
var userControl = ((UserControlType)placeholder.Controls[0]);
var controlName = userControl.FindControl("ControlName") as TextBox;
}
我还尝试在 page_init 上构建自定义控件,但我仍然无法获取用户控件。
有谁知道我怎样才能做到这一点?
解决方案
每次访问都必须在 Init Event 中设置动态用户控件。
有关详细信息http://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic4