5

次のように、ページの読み込み段階でコードビハインドからページにコントロールを追加しようとしています:

foreach (FileInfo fi in dirInfo.GetFiles())
{
    HyperLink hl = new HyperLink();
    hl.ID = "Hyperlink" + i++;
    hl.Text = fi.Name;
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar;
    Page.Controls.Add(hl);
    Page.Controls.Add(new LiteralControl("<br/>")); 
}

私が得ているエラーはオンでPage.Controls.Add(hl)、ここに説明があります:

コントロール コレクションは、DataBind、Init、Load、PreRender、または Unload フェーズでは変更できません。

この問題を解決するにはどうすればよいですか? 前もって感謝します。

4

2 に答える 2

4

ページ コントロール コレクションに直接ではなく、独自のコンテナー コレクションを作成して追加します。

.aspx の場合:

<asp:Panel id="links" runat="server" />

コード ビハインド (Initページの読み込みではなく、イベント ハンドラーを使用することをお勧めします):

foreach (FileInfo fi in dirInfo.GetFiles())
{
  HyperLink hl = new HyperLink();
  hl.ID = "Hyperlink" + i++;
  hl.Text = fi.Name;
  hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar;
  links.Controls.Add(hl);
  links.Controls.Add(new LiteralControl("<br/>"));
}
于 2010-12-19T20:14:05.440 に答える
0

コントロールを Page の Init() イベントに追加します。

于 2010-12-19T20:12:22.800 に答える