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”;