/ / Obtenga UserControl desde dentro ControlCollection - asp.net, controles de usuario

Obtenga UserControl desde dentro ControlCollection - asp.net, controles de usuario

Así que actualmente estoy agregando una colección de controles de usuario a una Colección de Panel.

Aquí está ese código

foreach (IssuePoll poll in issuePollList)
{
IssuePollsUC issuePoll = (IssuePollsUC)Page.LoadControl("~/UserControls/IssuePollsUC.ascx");
issuePoll.LoadPoll(poll, false, politician.PoliticianID);
pnlUnFinishedTest.Controls.Add(issuePoll);
}

Estoy tratando de obtener esos controles de usuario para poder llamar a un método de validación y guardar dentro de cada uno de esos controles. Aquí está el código que estoy usando para eso, pero no está funcionando.

foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = (IssuePollsUC)control;
issuePolls.SavePollAnswer(appUser.User.PersonID);
}

Recibo un mensaje de error en el convertido, dice

"No se puede convertir el objeto de tipo" System.Web.UI.LiteralControl "para escribir" UserControls.IssuePollsUC ""

EDITAR: Parece que el problema radica en el hecho de que un Control no se puede convertir en (Control de Usuario)

Respuestas

0 para la respuesta № 1

Hay otros controles en su panel además del control de usuario, es decir, el literal que está causando que falle la conversión. Tratar

foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = control as IssuePollsUC;

if(issuePolls != null)
{
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
}

Esto hará que sea más seguro.

EDITAR

Tenga en cuenta que debe agregar controles dinámicos en el Page_Init evento no Page_Load o en cualquier otro lugar. Sospecho que sus controles ni siquiera están allí, no los agrego Page_Init significa que no están en ViewState y no estará presente en ninguna colección de control.