Page.Controls.Add

08/06/2004 - 17:41 por Jesus | Informe spam
Buenas,

Tengo el mismo control ascx en dos páginas distintas.
Ambos controles están referenciados en el fichero aspx
exactamente de la misma manera. En el control se hace la
llamada a otro control para renderizarlo en tiempo de
servidor, asi:

Control myControl = Page.LoadControl
("~/Controls/Control.ascx");
Page.Controls.Add(myControl);
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
myControl.RenderControl
(htmlWriter);

Pues bien, en la llamada al método Add de Page.Controls
me salta una excepción en una de las dos páginas que dice
System.Web.HttpException: La colección de controles no
puede modificarse porque el control contiene bloques de
código (por ej. <% ... %>). Creo que es porque
aparentemente el la propiedad Page.Controls.IsReadOnly
está a true en esa página y en la otra no. Como puede ser
esto???
 

Leer las respuestas

#1 Jose Marcenaro
09/06/2004 - 00:07 | Informe spam
Creo que el motivo del error no es la propiedad IsReadOnly, sino el hecho de
que el user control interno que deseas instanciar (Control.aspx) contiene
controles con DataBinding (<% %> en su HTML) que no pueden ser cargados
dinámicamente.

Saludos
Jose Marcenaro

"Jesus" escribió en el mensaje
news:19bb601c44d6f$18d88c50$
Buenas,

Tengo el mismo control ascx en dos páginas distintas.
Ambos controles están referenciados en el fichero aspx
exactamente de la misma manera. En el control se hace la
llamada a otro control para renderizarlo en tiempo de
servidor, asi:

Control myControl = Page.LoadControl
("~/Controls/Control.ascx");
Page.Controls.Add(myControl);
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
myControl.RenderControl
(htmlWriter);

Pues bien, en la llamada al método Add de Page.Controls
me salta una excepción en una de las dos páginas que dice
System.Web.HttpException: La colección de controles no
puede modificarse porque el control contiene bloques de
código (por ej. <% ... %>). Creo que es porque
aparentemente el la propiedad Page.Controls.IsReadOnly
está a true en esa página y en la otra no. Como puede ser
esto???

Preguntas similares