Как получить доступ к идентификатору usercontrol со страницы aspx?

1

У меня есть usercontrol, как показано ниже.

public partial class lcont : System.Web.UI.UserControl
{
  public delegate void mydel(string str);

  protected void Page_Load(object sender, EventArgs e)
  {
  }
  public event mydel myevent;

  public void butt_click(object sender, EventArgs e)
  {

    if (myevent != null)
    {
        myevent(tv.SelectedNode.Value);
    }  
  }
}

И test.aspx, который использовал пользовательское управление выше.

<body>
 <form id="form1" runat="server">
 <uc1:lcont ID="lcont1" runat="server" />
 <div>
 <asp:Label ID ='lbl' runat="server" Text ="lbl"  />
 </div>
 </form>
</body>

Его код:

protected void Page_Load(object sender, EventArgs e)
{

   lcont1.myevent += delegate(string st)
    {
        lbl.Text = st;
    };

}

Как вы можете видеть здесь, я могу вызвать "lcont1", который является идентификатором usercontrol в кодовом коде aspx файла.

Теперь вопрос: я хочу сделать то же самое, но на этот раз с aspx файлом, который напрямую не реализовал usercontrol, но унаследовал главную страницу, которая реализовала usercontrol.

В другом слове usercontrol реализован на главной странице, а главная страница реализована на странице aspx. Теперь я хочу получить доступ к идентификатору usercontrol на странице aspx, как и в приведенном выше примере. Пожалуйста, помогите!

Теги:
user-controls

1 ответ

1
Лучший ответ

То, как я это сделаю, это...

Создайте публичную функцию/свойство в вашей MasterPage которая предоставляет UserControl

public lcont GetLcont1()
{
   return lcont1;
}

Затем в вашем .aspx вы можете наложить MasterPage

MyMasterPage myMaster = (MyMasterPage)Page.Master;

Теперь вы сможете получить свой UserControl и сделать то, что вам нужно с ним

lcont lcont1 = myMaster.GetLcont1();
lcont1.doSomething();

Обновить

Поскольку OP требует ложной подачи, вот код для страницы .aspx...

protected void Page_Load(object sender, EventArgs e)
{
  // Note: replace "MyMasterPage" with the name of your master page class
  MyMasterPage myMaster = (MyMasterPage)Page.Master;
  lcont lcont1 = myMaster.GetLcont1();
  lcont1.myevent += delegate(string st)
  ...
}
  • 0
    Функция GetLcont1 () возвращает фактический идентификатор usercontrol? Потому что мне нужно получить доступ к фактическому идентификатору usercontrol.
  • 0
    Если вы прочитаете код, вы увидите, что это экземпляр возвращаемого элемента управления ... Мне не нужно было об этом говорить. Если вам нужен идентификатор клиента, тогда сделайте lcont1.ClientID вместо lcont1.doSomething();
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню