因此,我当前正在向面板集合添加一组用户控件。
这是代码
foreach (IssuePoll poll in issuePollList)
{
IssuePollsUC issuePoll = (IssuePollsUC)Page.LoadControl("~/UserControls/IssuePollsUC.ascx");
issuePoll.LoadPoll(poll, false, politician.PoliticianID);
pnlUnFinishedTest.Controls.Add(issuePoll);
}
我正在尝试获取这些用户控件,以便在每个控件中调用validate方法和save方法。这是我正在使用的代码,但它不起作用。
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = (IssuePollsUC)control;
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
我在转换器上收到一条错误消息,上面写着
"无法将类型为"System.Web.UI.LeralControl"的对象强制转换为类型为"UserControls.IssuePollsUC"
编辑:看起来问题在于控件无法转换为(用户控件)
面板中除了用户控件之外还有其他控件,即导致强制转换失败的文字。尝试
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = control as IssuePollsUC;
if(issuePolls != null)
{
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
}
这将使其更加安全。
编辑
请注意,必须在Page_Init
事件中添加动态控件,而不是在Page_Load
或其他任何位置添加。我怀疑您的控件甚至不在那里——将它们添加到Page_Init
中意味着它们不在ViewState
中,也不会出现在任何控件集合中。