ASP.NET В чем разница между RenderContents и RenderControl, вызываемыми на каждом из base.Controls?

В приложении, с которым я работаю, я обнаружил, что управление ведет себя очень странно. Контроль происходит от System.Web.UI.WebControls.WebControl и объявляется с [ParseChildren(false)] так что это должно позволить дочерние элементы управления. Проблема заключалась в том, что это было только рендеринг элементов управления, которые имели runat="server" атрибут указан. Все статические части HTML были пропущены:

<mylib:somecontrol ID="test" runat="server">
  <div> this does not render! </div>
  <div id="whatever" runat="server"> but this does </div>
</mylib:somecontrol>

Я обнаружил, что элемент управления делал это, чтобы отобразить его содержимое:

foreach (Control control in this.Controls)
{
   control.RenderControl(writer);
}

Я считал, что статические биты HTML, а также все интервалы должны быть включены как LiteralControl случаи в this.Controls поэтому было неожиданно увидеть, что проблема решена после замены этого кода следующей строкой:

base.RenderContents(writer);

Вопрос в том, что RenderContents делает это по-другому?

0 ответов

Другие вопросы по тегам