我知道这个问题已经出现了无数次,但我找不到的帖子都没能帮我解决这个问题。
每隔一段时间,我就会收到标题中的错误:Multiple controls with the same ID 'ctl35' were found. FindControl requires that controls have unique IDs.
这肯定不会一直发生,似乎只需刷新几次就会导致错误消失。
我的页面基本上有一个UpdatePanel
,用户可以在其中输入与订单部分相对应的数据。由于可以有多个部分,因此有一个按钮可以创建新的Panel
,创建输入字段并将其添加到Panel
,然后将其添加到UpdatePanel
。用户可以多次单击此按钮以添加多个条目Panel
。为了实现这一点,我保留了List<Panel>
,每当用户想要一个新的输入字段时,我就会添加新的Panel
。当页面收到回发时(从添加按钮),然后我遍历列表并将每个Panel
重新添加到UpdatePanel
,ctl35
设法保留现有的条目面板。
由于这些字段是动态更新的,因此我确保将我将要检索数据的字段的ID设置为唯一且可彼此区分的字段。但是,如上所述,我偶尔会遇到有关使用ASP.NET自动生成的ID(在本例中为ctl35
)查找多个控件的问题。在收到此错误后,查看Chrome中呈现的HTML,根本没有将{{1}}作为其ID的控件。此外,渲染的HTML中没有一个甚至包含其ID以自动生成的“ctlXX”结尾的任何元素。因此,我无法理解可能存在可能的命名冲突问题的位置。这个错误在大多数情况下不会发生的事实也是这里混淆的主要原因。
有关此问题可能是什么的任何想法,或者我可能需要做些什么来解决这个问题?
答案 0 :(得分:1)
确保您为所有动态创建的控件分配ID,而不仅仅是您需要从中获取数据的控件。我已经看到在添加的控件上使用默认ID时会发生这种情况。