В чем разница между Render и RenderControl в создании WebControl? - PullRequest
17 голосов
/ 31 октября 2009

Я недавно научился писать свои собственные WebControls, но я все еще не уверен в разнице между Render и RenderControl. Я начал использовать Render, но в какой-то момент я начал использовать RenderControl, который я сейчас использую исключительно. Если у меня формируется дурная привычка, я бы хотел пресечь ее в зародыше, прежде чем у меня возникнут проблемы.

Ответы [ 4 ]

17 голосов
/ 31 октября 2009

Вот хорошее чтение: Render vs RenderControl

Выдержка из ссылок:

Метод Render позволяет контроллер для визуализации себя, написав HTML вывод в поток ответов. Это передает ссылку на HTMLTextWriter объект, который может писать непосредственно к потоку ответов. это метод должен использоваться, когда вы выводите прямо из управления.

Используется метод RenderControl по странице, чтобы сделать каждого человека контроль. Это позволяет потребителю ваш класс, чтобы сделать это, и вы можете использовать его для рендеринга дочерних элементов управления, если вы используете композитный элемент управления. Кроме того, следует отметить, что это не будет вызван, если видимость свойство элемента управления установлено на ложь.

8 голосов
/ 05 февраля 2012

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

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

   writer.Write(""):
   foreach(Control ctl in Controls)
   {
      writer.Write("")
      ctl.RenderControl(writer);
      writer.Write("");
   }
   writer.Write("");

Вы должны всегда переопределять Render, а не RenderControl, как он вызывается в жизненном цикле событий (как я уже сказал)

(из http://forums.asp.net/t/909220.aspx/1, извините, мой ответ - всего лишь копирование и вставка, но я не видел особого смысла переписывать такое кристально чистое объяснение)

Я до сих пор не понимаю, почему MS просто не сделала Render () публичным методом. Зачем нужен отдельный RenderControl ()? Причина этого отсутствует во всех ответах, данных до сих пор. Первый человек, который может это объяснить, получает блестящий голос.

5 голосов
/ 30 апреля 2010

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

Рендеринг используется, если вам нужен полный контроль над тем, как визуализируется HTML.

Конечно, вы можете комбинировать их для оптимального использования вашего времени программирования ...

EDIT
Для лучшего объяснения этого и отличного указания на то, что использовать, когда, см. ответ от mhenry1384 .

2 голосов
/ 31 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...