Как сделать так, чтобы дети появлялись в пользовательском веб-контроле для ASP.NET? - PullRequest
2 голосов
/ 22 октября 2008

Например, у меня есть пользовательский элемент управления, называемый SampleControl. Чтобы упростить этот вопрос, представьте, что я делаю просто клон панели управления с нуля.

<CC:SampleControl ID="Sample1" runat="server">
   <asp:Label ID="Label1" runat="server" Text="Hi"></asp:Label>
   <asp:Button ID="Button1" runat="server" Text="Button1"></asp:Label>
</CC:SampleControl>

Для вывода:

<div id="Sample1">
   <span id=Label1>Hi</span>
   etc.....
</div>

Где код:

public class SampleControl: WebControl
{
    .....Render Stuff Goes Here.....
}  

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

Когда я это делаю, я получаю эту ошибку:

Ошибка парсера Описание: во время анализа ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующую конкретную информацию об ошибке разбора и измените исходный файл соответствующим образом.

Есть идеи?

1 Ответ

6 голосов
/ 22 октября 2008

Во-первых, атрибуты [ParseChildren (false)] позволяют анализатору знать, что вы хотите, чтобы ваш элемент управления рассматривал вложенное содержимое как дочерние элементы управления.

Затем убедитесь, что где-то в Render вызывается метод RenderChildren. Это стандартная реализация System.Web.UI.Control.Render (), поэтому вы можете использовать base.Render (writer) в переопределенном методе Render.

...