tag route net for data asp all asp.net dynamic user-controls

route - Control de usuario personalizado de ASP.NET para agregar dinĂ¡micamente.



asp-for select (1)

Tengo dificultades para modificar una página que tenía un Control de usuario personalizado directamente a la página ASPX y ahora necesito que se cargue dinámicamente solo cuando sea necesario. El control de usuario tiene html y otros controles a través del archivo ASCX y tiene un código en el código subyacente.

He leído varias páginas y he descubierto que no puedo crear una instancia directamente del Control de usuario, pero debería usar el Page.LoadControl(...) . El problema no es la compilación, pero cuando la página carga el control, sucede que todos los controles dentro del ASCX son nulos y luego se bloquean.

¿Cómo puedo usar un Control de usuario que tiene código en el ASCX y en el código subyacente dinámicamente?

Editar:

Ejemplo de lo que estoy haciendo en (PageLoad o PagePreRender o PagePreInit)

Control c = LoadControl(typeof(MyControl), null); myControl= (MyControl)c; myControl.ID = "123"; myControl.Visible = false; Controls.Add(myControl);

MyControl tiene, por ejemplo, <div id="whatever" runat="server"> ... y dentro de MyControl establece la visibilidad en Verdadero o Falso ... pero cuando lo hace, ahora se bloquea porque "lo que sea" div es NULL.


Lo que he hecho es usar el método Page.LoadControl en Page_Init para agregar el control de usuario personalizado a un marcador de posición en la página.

protected void Page_Init(object sender, EventArgs e) { //MyControl is the Custom User Control with a code behind file MyControl myControl = (MyControl)Page.LoadControl("~/MyControl.ascx"); //UserControlHolder is a place holder on the aspx page where I want to load the //user control to. UserControlHolder.Controls.Add(myControl); }

Esto funciona bien para mi.

Aquí está el código para el control de usuario cargado dinámicamente:

MyControl.ascx.cs

public partial class MyControl : System.Web.UI.UserControl { protected void Page_Init(object sender, EventArgs e) { LiteralControl lit = new LiteralControl("Test Literal Control"); Page.Controls.Add(lit); } protected void Page_Load(object sender, EventArgs e) { whatever.Visible = true; if (IsPostBack) { whatever.Visible = false; } } }