ASPX中继器不一致/无法解释的行为

时间:2018-10-04 08:38:05

标签: c# asp.net aspx-user-control

使用中继器时,我的行为不一致。我有一个带有从DataTable填充的文本框的中继器。一切正常工作了一会儿,然后出现以下错误。

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

该错误似乎在第二个会话上发生:

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

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

任何想法会导致这种情况吗?预先感谢。

2 个答案:

答案 0 :(得分:0)

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

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

这将对您有所帮助:Set ID of Items In a Repeater

答案 1 :(得分:0)

解决方案非常简单,但是我误以为这只是在第二个调试会话中开始发生的事实。

我在使用带有孩子的自定义TextBox控件时,将以下内容添加到自定义文本框中即可解决此问题。

     public override string ID
    {

        get
        {
            return base.ID;

        }

        set
        {
            base.ID = value;

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

        }
    }

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

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