为我的自定义 ASP.net 服务器控件生成的 HTML 代码为子控件生成 name 属性,而不是 id 属性。像这样的东西:
<span id="GridView2_ctl02_editdis">
<input type="text" name="GridView2$ctl02$editdis$ctl00"/>
</span>
自定义控件本身的 ID 显然是正确的。
对我来说更奇怪的是,有时确实会生成 ID (我不知道在什么条件下)。但是FindControl()
具有该 ID 的 a 在服务器端返回 null。FindControl()
使用 name 属性的值就可以了。
像这样的东西:
<span class="TextBox" id="GridView2_ctl02_editdis">
<input type="text" id="GridView2_ctl02_editdis_ctl00" name="GridView2$ctl02$editdis$ctl00"/>
</span>
对于上述情况,FindControl("GridView2$ctl02$editdis$ctl00")
工作正常,FindControl("GridView2_ctl02_editdis_ctl00")
没有。
如何确保一致且可预测的 ID?