I am trying to add controls to the page from the code behind in the page load stage like this:
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/>"));
}
The error which I am getting is on Page.Controls.Add(hl)
and here is the explanation:
The control collection cannot be modified during DataBind, Init, Load, PreRender or Unload phases.
What can I do to fix this issue? Thanks in advance.
Create your own container collection and add these to it, instead of directly to the page controls collection.
On .aspx:
<asp:Panel id="links" runat="server" />
In code behind (I suggest using the Init
event handler rather than page load):
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/>"));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With