ASP.NET Пользовательский пользовательский элемент управления для добавления динамично

У меня есть трудное время для изменения страницы, которая имела Пользовательский Пользовательский элемент управления непосредственно к странице ASPX, и теперь потребуйте, чтобы загрузить ее динамично при необходимости только. Пользовательский элемент управления действительно имеет HTML и другие средства управления через файл ASCX и имеет код в коде - позади.

Я считал несколько страница и нашел, что не могу инстанцировать непосредственно Пользовательского элемента управления, но должен использовать Page.LoadControl(...). Проблемой не является компиляция, но когда страница загружает управление, это происходит, что все средства управления в ASCX являются пустыми и затем отказывают.

Как я могу использовать Пользовательский элемент управления, который имеет код в ASCX и в коде - позади динамично?

Править:

Пример того, в чем я выполняю (PageLoad или PagePreRender или PagePreInit)

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

MyControl действительно имеет, например, <div id="whatever" runat="server">... и в MyControl это установило видимость на TRUE или FALSE..., но когда это делает это, теперь это отказывает, потому что "независимо от того, что" отделение является ПУСТЫМ.

21
задан Liam 13 March 2019 в 09:05
поделиться

1 ответ

Что я сделал, так это использовал метод Page.LoadControl в Page_Init для добавления пользовательского элемента управления в держатель на странице.

 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);

}

Для меня это работает нормально.

Вот код для динамически загружаемого пользовательского элемента управления:

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;
            }

        }
    }
42
ответ дан 29 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: