ASP.NET服务器控件的强大使得.NET程序员方便很多,也轻松很多(当然,从事这个行业的人都知道这是一把双刃剑……)。但是服务器控件顾名思义是要请求服务器的,那么这样子就给客户端增加的带宽负担。这是开发人员和用户都不愿意看到的。
那么肯定有人在想怎样既能使用服务器控件(方便后台操作),又能让JS操作服务器控件(页面能处理的用JS处理)。这样子程序员方便了,用户也高兴了。办法当然是有的。具体实现如下:
<head> <script type=”text/javascript”> windows.onload = function(){ var mylbl = document.getElementById(‘<%=lblTest.ClientID %>’); alert(mylbl.textContent); } </script> </head> <body> <asp:Lable ID=”lblTest” runat=”server”>Test</asp:Lable> </body>
对的,就是使用.ClientID这个属性。这样子就省事多了!
在网上看到很多人使用其生成HTML代码中的id,这样做可以,但是最大的问题就是稳定性太差。上面的方法简单,稳定性良好。
还有一个办法也是可行的:
那就是在服务器端注册一个JS脚本,在需要使用这个ID的时候再去注册,原因?页面对此回发到服务器之后,服务器控件的ID可能会发生变化,从而带来不可预知的结果,所以,在需要使用这个控件时向页面注册一段JS代码,然后在前台直接调用就OK了,例:
RegisterStartupScript(“check”, “\n<script>\n” + “function check()\n” + “{\n” + “ return alert(”” + txtName.ClientID.ToString() + “”);\n” + “}\n” + “</script>\n”;