2013-08-22 2 views
1

Мне было интересно, почему вы должны использовать FindControl, чтобы ссылаться на этот флажок в LayoutTemplate . Пример:Почему нельзя контролировать элементы управления в шаблонах через своих родителей?

var login1CheckBox1 = (CheckBox)Login1.FindControl("CheckBox1"); 

Я бы ожидать, чтобы быть в состоянии сделать что-то вдоль линий:

var login1CheckBox1 = Login1.LayoutTemplate.CheckBox1; 

В случае ниже Repeater, очевидно, потому что может быть п число CheckBoxes , Но для управления Login это не имеет смысла. Почему бы не реализовать это по-другому?

<asp:Login ID="Login1" runat="server"> 
    <LayoutTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </LayoutTemplate> 
</asp:Login> 

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

У кого-нибудь есть свет, чтобы сиять на этом?

ответ

0

Элемент управления, добавленный на страницу с помощью разметки, определен в частичном классе конструктора, как правило, во время разработки.

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

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

При создании страницы в разметке мы используем средства IDE для создания частичного класса. При определении шаблона в разметке мы просто устанавливаем значение ITemplate для этого элемента управления.

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