次のコードでASP.NETユーザーコントロール "Box.ascx"を構築しました。usercontrolインラインコードの関数を呼び出すことが常に機能しない
<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();
Iは、次のコードで "ShowBox.aspx" の "Box.ascx" コントロールを使用。
<body>
<uc1:Box ID="myBox" runat="server" />
</body>
次のコードを使用して、コードビハインドからユーザーコントロールに値を渡します。
protected void Page_Load(object sender, EventArgs e)
{
myBox.RecordID = "1";
}
<%= "" %>はResponse.Writeと同等で、サーバーコントロールのプロパティを設定するときには機能しません。 – Peter