簡體   English   中英

將Javascript與ASP.Net控件一起使用

[英]Using Javascript With ASP.Net controls

使用ASP.Net控件設置客戶端“ onclick”事件時是否有最佳實踐? 簡單地添加onclick屬性會導致Visual Studio警告onclick不是該控件的有效屬性。 通過codebehind可以在Page_Load事件期間添加它,但是不如我所願。

這是僅有的兩個選擇嗎? 是否有正確的方法來做我所缺少的?

謝謝! 埃里克·西普爾

** 只是答案的前言:VS中的HTML驗證通常是BS。 它抱怨適用於IRL的東西,即使這些東西是不好的做法。 但是有時您必須改變規則以完成工作。

每個ASP.NET頁(2.0及更高版本)都帶有一個ClientScriptManager 您可以使用它從服務器端代碼注冊javascript。 當頁面上的HTML控件全部出現在DOM中時,您可以傳入在頁面加載后在控件上注冊事件的JavaScript。

它在頁面上顯示了一個統一的位置,可以動態添加javascript,這不是一件壞事。 但是,它非常丑陋。

在ASP.NET服務器控件模型消失的這段時間里,您可能想要以與ASP.NET MVC將來相同的方式設置事件。 獲取jQuery的副本並將其添加到您的網站。 然后,您可以輕松地注冊事件:

  <html>
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
      $(document).ready(function(){
        $("controlId").bind("click", function(e) { /* do your best here! */ });
      });
    </script>
  </head>
  <!-- etc -->
  </html>

您可以通過Javascript將事件添加到所需的HTML元素中。 這是最干凈的方法,因為它沒有混合使用服務器和客戶端技術。 此外,通過這種方式,可以將許多處理程序注冊到同一事件(與onclick屬性相反)。

基本上,代碼是

document.getElementById('myLovelyButtonId').attachEvent('onclick',doSomething)

用於Internet Explorer和

document.getElementById('myLovelyButtonId').addEventListener('click',doSomething,false)

對於其他瀏覽器。 (doSomething是事件處理程序-JavaScript函數)。 這些調用應在窗口加載事件處理程序中進行

考慮閱讀有關Quirksmode高級事件注冊文章以獲取更多信息。

另外,考慮使用類似jQuery的庫。 這樣,語句將變為

$('#myLovelyButtonId').click(
    function doSomething () {
        alert('my lovely code here');
    });

可以設置WebControl.Attributes["onclick"]值。 如果ASP.NET需要客戶端click處理程序,它將連接以分號分隔的值。

修復語法或拼寫錯誤。

澄清含義而不更改它。

糾正小錯誤。

添加相關資源或鏈接。

始終尊重原始作者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM