1

使用中继器时出现不一致的行为。我有一个中继器,其中包含从 DataTable 填充的文本框。一切正常运行一段时间,然后开始弹出以下错误。

找到了具有相同 ID 'txt' 的多个控件。FindControl 要求控件具有唯一的 ID。

该错误似乎发生在第二次会议上:

  1. 重建和调试:一切正常。

  2. 停止调试并再次调试:错误无限期地发生,直到重建。

有什么想法会导致这种情况吗?提前致谢。

4

2 回答 2

0

错误表明您对文本框使用相同的 id。您必须对诸如 "txt_data_{uniqueId}" 之类的文本框使用动态 ID。这里的 uniqueId 可能是索引,也可以使用您的数据主键。

在这里您可以看到图像标签的答案:https ://forums.asp.net/t/1655369.aspx?Multiple+controls+with+the+same+ID

这将对您有所帮助:在中继器中设置项目 ID

于 2018-10-04T08:47:23.993 回答
0

解决方案非常简单,但我被这仅在第二次调试会话中开始发生的事实误导了。

我正在使用我自己的自定义 TextBox 控件和孩子,将以下内容添加到我的自定义文本框中解决了这个问题。

     public override string ID
    {

        get
        {
            return base.ID;

        }

        set
        {
            base.ID = value;

            if(mTextBox != null)
                mTextBox.ID = "txt" + base.ID;

        }
    }

但是我仍然想了解为什么这个问题只会从第二个调试会话开始。我可以在第一次会话中重新加载页面 10 次以上而不会出现任何错误,并且只有当我重新开始调试时才会出现错误。

我能想到的唯一原因是aspx中继器缓存了冲突的数据?

于 2018-10-05T09:23:06.567 回答