2010-04-26 36 views
1

我有一个从VS2003转换到vs2005的企业应用程序。发现相同ID'xxx'的多个控件

转换后的应用程序,在一个页面中我编辑并保存我得到这个错误。

System.Web.HttpException:找到具有相同ID“hidWIPID0”的多个控件。 FindControl要求控件具有唯一的ID。

但在vs2003版本的代码中没有任何错误的罚款。

它的一个巨大的应用程序与动态母版页和usercontrols等..所以我不能粘贴确切的代码在这里。

但是,错误的起源是母版页内容控制。

如: 页面代码 MasterPageStrategy:内容ID = “pnlMain”

错误

用相同的ID 'hidWIPID0' 多个控件中发现

查看源

MasterPage:pnlMa在:_ctl2:hidWIPID0

我Microsoft支持有一篇文章解释相同的问题。但它适用于1.1版本。 我已经在2.0版本中转换了代码,并且转换代码中出现错误。

http://support.microsoft.com/kb/834608

有人请看看这个问题,并提供我一个解决方案,因为它是非常迫切的。

感谢 SNA

回答

2

的问题是什么异常告诉你。在您的母版页/页面树中,有几个具有相同ID的控件。在.NET 2.0和其他版本中,这是不允许的。

我建议搜索用于构建您请求的页面的主页和页面,并重命名具有相同ID的控件之一。然而,既然你有一个巨大的应用程序与多个动态和继承masterpages我想你会偶然遇到同样的问题多次。

也许你应该切换到4.0版本的.NET框架?在4.0中,你可以指定'clientIDMode'。更多关于此:http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx

编辑 虽然考虑它,它没有任何意义。当您拥有多个主页面和contentplaceholder时,控件将获得唯一的前缀。在我看来,在一个页面中有一种类似的中继器会导致此问题。

+0

你是真的。问题的由来是动态生成的表格(现在是3)添加到占位符上。每个表格的标题行都有一个隐藏的控件。 – SNA 2010-04-27 10:53:11

+0

然后,您应该以某种方式为动态生成的表提供唯一的ID。很高兴我能帮助你。 – Joop 2010-04-27 11:13:21

+0

实际上它是一种为uniquid构建的逻辑,但不知何故在代码中发生了表的重复。实际上只有一个表应存在。非常感谢。你的回答帮助我思考和解决问题。 – SNA 2010-04-29 09:19:55

相关问题