2012-06-29 3 views
1

Чтобы добавить пользовательский контроль в codebehind, существует два пути.Разница между LoadControl и публикацией конструктора?

  1. Публикация конструктора usercontrol на родительскую страницу.
  2. Использование метода Page.LoadControl.

Таким образом, в основном существуют два разных способа выполнения одной и той же задачи. Способствует ли один метод при определенных обстоятельствах, а другой - нет? В чем разница в том, как они работают? и когда предпочитать один над другим?

ответ

0

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

MyControl c = new MyUserControl() является предпочтительным, но не мешает вам делать что-то вроде:

MyControl c = (MyControl)Page.LoadControl('path to ascx'); 

Однако, я не вижу необходимости.

+0

Это не совсем так. Смотрите мой пост –

2

Я нашел ответ here

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

Веб-пользовательские элементы управления, такие как WebControls (DataGrid, Button, ...), являются классами . Для их создания вы просто вызываете их конструктор: Dim b as Button = new Button()

Управление веб-пользователями определяется страницей ASCX (содержащей HTML) и классом . Класс - это просто код для управления, поэтому, если вы вызываете его конструктор, вы не создаете элемент управления. Вот где нужен метод LoadControl : вы передаете ему имя страницы ASCX, и загрузите эту страницу и класс CodeBehind.

Смежные вопросы