我遇到了在页面生命周期中动态加载的UserControls的ID属性出现问题。 更具体地说,当系统调用Page.Form.RenderControl(htmlTextWriter)时,ID属性会发生变化; 在调用之前,控件的ID为“ctl84”,但在调用之后它的ID为“ctl99”。
htmlTextWriter的输出包含原始ID,但是在VS 2008调试器中检查Control的ID属性会显示它已更改。
应用程序在使用.NET 2.0的MCMS 2002(Microsoft CMS 2002)框架内运行,从1.1转换而xhtmlConformance =“Legacy”未启用。
我需要ID在整个Page生命周期中保持不变。
编辑:手动设置ID属性不是一个选项。
答案 0 :(得分:1)
您是否明确地从代码中为控件分配ID?
如果你是ID应该保持不变。
它没有解释为什么它会改变 - 我的猜测是...不是相同控制。由于某些原因,您可能会控制生成例程运行两次或者像这样运行。
在控制权被置换的地方设置一个断点,看看它是否被击中两次 - 如果是这样,你去,那就是你的问题。
答案 1 :(得分:0)
要确保它与控件的实例相同而不是另一个,请检查控件的GetHashCode()方法。
答案 2 :(得分:0)
当您包含asp.net控件时,在运行时生成的ID会更改。您无法预测生成的确切客户端ID。您可以使用用户控件提供的ClienID属性。
按钮btnSave = new Button();
btnSave.ID =“btnSave”;
string clientID = btnSave.ClientID;
如果您检查cientID,它将类似于“ctl88_99 _ *** _ btnSave”。
答案 3 :(得分:0)
是的我认为rAm是正确的......在我之前的经历中......我注意到显式id值一直有效并且会推荐相同的... Andy