1

私のシーンはこんな感じです。

ドロップダウン リストから 1 つまたは複数のユーザー コントロールを選択する必要がある管理ページ (ヘッダー セクション) を作成する必要があります ....

ページに動的に追加されます....

どうすればいいですか?

現在、私の考えはこのようなものです

ドロップダウンリストリストからユーザーコントロールを選択して追加すると、テキストエリアにユーザーコントロールタグを追加してデータベースに保存します...

Web サイトのインデックス ページが呼び出されると、ヘッダー セクションがデータベースからレンダリングされて表示されます。

しかし、レンダリング中にindex.aspxのページの上部に配置する必要があるコントロールタグをどのように管理すればよいですか??

理解するのが難しい場合があることは承知していますが、私の質問に関連する質問があれば、できる限り返信します

気を付けて

4

1 に答える 1

1

あなたの質問が正しく理解できれば、タグなどをデータベースに保存する必要はありません。ロードするコントロールの名前とパス (ユーザー コントロールは同じプロジェクトからのみロードできることに注意してください)。ユーザー コントロールを動的に読み込むコード サンプルを次に示します。

  <asp:DropDownList ID="userControlSelection" runat="server" AutoPostBack="true"
    onselectedindexchanged="userControlSelection_SelectedIndexChanged">
      <asp:ListItem Value="1">User Control One</asp:ListItem>
      <asp:ListItem Value="2">User Control Two</asp:ListItem>
</asp:DropDownList>
<asp:Panel ID="controlHolder" runat="server" ></asp:Panel>

コードの背後にある重要な部分は「this.LoadControl("~/WebUserControl2.ascx");」です。詳細とユーザー コントロールの読み込みについては、この記事を参照してください。 ユーザー コントロールを動的に作成する

protected void userControlSelection_SelectedIndexChanged(object sender, EventArgs e)
    {
        Control c = null;
        if (userControlSelection.SelectedValue == "1")
        {
            c = this.LoadControl("~/WebUserControl1.ascx");
        }
        else if (userControlSelection.SelectedValue == "2")
        {
            c = this.LoadControl("~/WebUserControl2.ascx");                
        }

        if (c != null)
        {
            controlHolder.Controls.Clear();
            controlHolder.Controls.Add(c);
        }
        else
        {
            //Throw some error
        }

    }

これが役に立てば幸いです、ありがとう

于 2012-01-01T07:42:11.023 に答える