asp.net 母版,自定义控件中的控件客户端ID变化解决办法
asp.net加载母版页或者用户自定义控件后,母版或者自定义控件中的包含runat="server"的控件自后在客户端生成的id会自动被修改,但是有一定的规律。客户端ID改变后,造成js通过id获取客户端控件变得困难。
解决办法有下面几种
1)使用客户端控件,不增加runat="server"属性,这样客户端ID就不会变了
2)使用ClientID属性
<script> window.onload = function () { var o = document.getElementById('<%=txtAutoID.ClientID %>'); } </script> <asp:TextBox ID="txtAutoID" runat="server" ClientIDMode="AutoID"></asp:TextBox>
3)查看客户端的源代码,看控件生成的ID的规律,修改对应的js代码中的控件id值
4)在ASP.NET 4.0中的每个控件上都多了一个叫做ClientIDMode的属性,将ClientIDMode设置为static后客户端控件的id就不会变了,和服务器端起得ID一样。
更多ClientIDMode介绍参考这篇文章:使用asp.net4.0 ClientIDMode属性指定组件客户端id生成规则
注意:IIS中网站属性配种的asp.net要选择framework4.0+版本的,要不ClientIDMode会按照AutoID模式来生成,ClientIDMode没效果
示例
服务器端html代码 <asp:TextBox ID="txtStatic" runat="server" ClientIDMode="Static"></asp:TextBox> 客户端生成的html代码 <input name="ctl00$MainContent$txtStatic" type="text" id="txtStatic" />
加支付宝好友偷能量挖...
原创文章,转载请注明出处:asp.net 母版,自定义控件中的控件客户端ID变化解决办法