“找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。”这个问题估计困扰了不少ASP.NET的初学者,其实解决它并不难。
下面这段代码没有错,但是运行时会出现上诉问题。为什么?
foreach (JobDirection jd in directionList)
{
AccordionPane ap = new AccordionPane();
Label lblCtegoryMenu = new Label();
lblCtegoryMenu.Text = jd.JobDeriction;
ap.HeaderContainer.Controls.Add(lblCtegoryMenu);
Accordion1.Panes.Add(ap);
}
这是因为在 AccordionPane 中,如果不指定ID,它会自动的加上默认ID,但是这个ID不会随着FOREACH的进行而进行自动更改
所以,就会出现ID重复的现象。以下是改进后的代码:
foreach (JobDirection jd in directionList)
{
AccordionPane ap = new AccordionPane();
Label lblCtegoryMenu = new Label();
lblCtegoryMenu.Text = jd.JobDeriction; ap.ID = Convert.ToString(jd.JobDerictionId); //关键就在这句,手动的指定ID,就不会报错了 ap.HeaderContainer.Controls.Add(lblCtegoryMenu);
Accordion1.Panes.Add(ap);
}
下面这段代码没有错,但是运行时会出现上诉问题。为什么?
foreach (JobDirection jd in directionList)
{
AccordionPane ap = new AccordionPane();
Label lblCtegoryMenu = new Label();
lblCtegoryMenu.Text = jd.JobDeriction;
ap.HeaderContainer.Controls.Add(lblCtegoryMenu);
Accordion1.Panes.Add(ap);
}
这是因为在 AccordionPane 中,如果不指定ID,它会自动的加上默认ID,但是这个ID不会随着FOREACH的进行而进行自动更改
所以,就会出现ID重复的现象。以下是改进后的代码:
foreach (JobDirection jd in directionList)
{
AccordionPane ap = new AccordionPane();
Label lblCtegoryMenu = new Label();
lblCtegoryMenu.Text = jd.JobDeriction; ap.ID = Convert.ToString(jd.JobDerictionId); //关键就在这句,手动的指定ID,就不会报错了 ap.HeaderContainer.Controls.Add(lblCtegoryMenu);
Accordion1.Panes.Add(ap);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货