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没效果

asp.net 母版,自定义控件中的控件客户端ID变化解决办法


示例
 

服务器端html代码
<asp:TextBox ID="txtStatic" runat="server" ClientIDMode="Static"></asp:TextBox>
客户端生成的html代码
<input name="ctl00$MainContent$txtStatic" type="text" id="txtStatic" />

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:asp.net 母版,自定义控件中的控件客户端ID变化解决办法

评论(0)Web开发网
阅读(952)喜欢(0)Asp.Net/C#/WCF