1

我一直想知道为什么你必须使用来引用LayoutTemplateFindControl中的复选框。Login1例子:

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

我希望能够按照以下方式做一些事情:

var login1CheckBox1 = Login1.LayoutTemplate.CheckBox1;

在下面的情况下Repeater,很明显,因为可以有 n 个 CheckBox。但是对于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>

有没有人有任何光照?

4

1 回答 1

0

通过标记添加到页面的控件通常在设计时在设计器部分类中定义。

添加到模板的控件通常在控件的控件集合中以编程方式实例化。

由于添加到模板的控件在该控件的定义中在编译时不存在,因此实现您的目标语法是相当不可能的。

在标记中创建页面时,我们使用 IDE 的工具来生成部分类。在标记中定义模板时,我们只是为该控件设置ITemplate的值。

于 2013-08-22T17:55:57.660 回答