为什么我无法访问 Repeater 内的 UserControl 自定义 属性?

Why can't I access to a UserControl custom property inside a Repeater?

我正在为 Repeater 做数据绑定:

<asp:Repeater ID="rptAlumni" runat="server" OnItemDataBound="rptAlumni_DataBinding">
    <ItemTemplate>
        <uc1:AlumnoBox runat="server" ID="AlumnoBox" />
    </ItemTemplate>
</asp:Repeater>

protected void rptAlumni_DataBinding(object sender, RepeaterItemEventArgs e)
{
    var item = (UserControl)e.Item.FindControl("AlumnoBox");
}

但我做不到 item.MyCustomID 例如,我看不到 属性。相反,如果我将 UserControl 移到 Repeater 之外,并在 Page Load 中执行 AlumnoBox.MyCustomID 它也可以正常工作。

我哪里错了?

您的 UserControl 继承自 UserControl,但您添加了其他属性,例如 MyCustomID。当然,如果您转换为 UserControl,您将无法访问这些属性,因为基础 class 不知道它们。而是转换为正确的类型 AlumnoBox:

var item = (context_box_AlumnoBox) e.Item.FindControl("AlumnoBox"); 
int id = item.MyCustomID;