0

Web ユーザー コントロール (A) を読み込む Web フォームがあります。

コントロール A のボタンがクリックされると、次の名前の別の Web ユーザー コントロールの配列がロードされます。infobox

Web ユーザー コントロール A のコレクションを制御するためにユーザー コントロールを追加すると、表示されません。

以下はコードです:コントロールAのボタンクリック時

foreach (Categories category in CategoriesDataList)
            {
                InfoBox ib = new InfoBox();
                ib.LiteralName = category.Category_Name;
                span_tempList.Controls.Add(ib);
                ib = null;           
            }   



span_tempList is a `<span>` tag with `runat=server`

以下 i InfoBox コントロールの HTML および cs コード

 public partial class InfoBox : System.Web.UI.UserControl
    {
        protected global::System.Web.UI.WebControls.Label ltrlName = new System.Web.UI.WebControls.Label();

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public InfoBox()
        {

        }

        public string LiteralName
        {
            get { return ltrlName.Text; }
            set { ltrlName.Text = value; }
        }

    }

--HTML--

<div style="width:10%;float:left;">
        <asp:Label ID="ltrlName" runat="server" Text="Label"></asp:Label>
    </div>
    <div style="width:20%;float:left;">
        <asp:Image ID="imgPicture" runat="server" ImageUrl="" />
    </div>
    <div style="width:70%;float:right;">

    </div>

ページにコントロールを追加しようとしても機能しません

4

1 に答える 1

3

ページのコントロール コレクションに追加する場合は、コンストラクターを使用して UserControl のインスタンスを作成するのではなく、LoadControlを使用して作成する必要があります。

InfoBox ib = (InfoBox)LoadControl("InfoBox.ascx");

また、なぜコントロールを に設定しているのnullですか? ページのライフサイクルの最後に自動的に破棄されます。

于 2012-01-05T13:26:51.397 に答える