Как вызвать метод пользовательского элемента управления со страницы в asp.net 2.0?

У меня есть usercontrol, который используется на главной странице. Я добавил страницу с главной страницей.

Теперь мне нужно вызвать метод пользовательского элемента управления со страницы. Как это сделать? Пожалуйста, помогите.

Ответ 1

Предполагая, что ваш метод является общедоступным, а ваш пользовательский тип управления - это ваш пользовательский интерфейс, попробуйте следующее:

YourUserControlsType ctrlAtMasterPage = 
      (YourUserControlsType)Page.Master.FindControl("YouControlsID");
ctrlAtMasterPage.YourPublicMethod();

Ответ 2

Это должно получить вам контроль, даже если он был добавлен программно:

В члене страницы, которую вы добавили:

TextBox FoundTextBox = (TextBox)this.Master.FindControl("RunAtServerTextBoxServerID");

Ответ 3

Если у вас нет ссылки на элемент управления, вы должны рассмотреть возможность отсоединения страницы от элемента управления. В идеальном мире страница не обязательно должна знать о контроле, который он может содержать или не может. Таким образом, вы можете изучить реализацию шаблона MVP.

Здесь есть простая реализация MVP здесь, и вы можете увидеть развязку в действии здесь. Если вы отмените связь с примером развязки (например, страница запускает событие, которое элемент управления выбирает), то в основном вы отделили свою страницу от элемента управления. Это имеет преимущество в том, что, если ваша страница меняется и элемент управления больше не используется, событие не подхватывается ничем, и ваша страница продолжает выполняться без проблем. Я считаю это гораздо более подходящим, чем потенциальное исключение с нулевой ссылкой, когда FindControl не находит элемент управления, а затем вы пытаетесь выполнить на нем метод.

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