我使用以下代码构建了一个 ASP.NET 用户控件“Box.ascx”。
<div id="divContent" runat="server" visible='<%# AllowedToView(this.Privacy) %>'>
Content
</div>
在代码隐藏中,“Box.ascx.cs”具有以下代码。
public string Privacy = string.Empty;
public bool AllowedToView(string privacy)
{
return true;
}
当我在中继器中使用此控件时,会触发 AllowedToView() 函数。如果我在没有中继器的情况下使用此控件,则不会调用 AllowedToView() 函数。我想知道为什么会发生这种奇怪的情况,以及在没有中继器的情况下如何使控件调用 AllowedToView() 函数。
详情如下。
我在“Default.aspx”中的转发器中使用此控件。
<asp:Repeater ID="rpRecords" runat="server">
<ItemTemplate>
<uc1:Box ID="myBox" runat="server" RecordID = '<%# Eval("RecordID") %>' />
</ItemTemplate>
</asp:Repeater>
中继器在“Default.aspx.cs”中使用以下代码进行数据绑定:
DataTable dt = FillTable();
rpRecords.DataSource = dt;
rpRecords.DataBind();
我将“ShowBox.aspx”中的“Box.ascx”控件与以下代码一起使用。
<body>
<uc1:Box ID="myBox" runat="server" />
</body>
我使用以下代码从代码隐藏中为用户控件赋值。
protected void Page_Load(object sender, EventArgs e)
{
myBox.RecordID = "1";
}