2

ASP.Net コントロールを使用するときにクライアント側の「onclick」イベントを設定する場合のベスト プラクティスはありますか? onclick 属性を追加するだけで、onclick はそのコントロールの有効な属性ではないという Visual Studio の警告が表示されます。コードビハインドを介して Page_Load イベント中に追加することはできますが、私が望むほど明確ではありません。

選択肢はこの2つだけですか?私が見逃しているこれを行う正しい方法はありますか?

ありがとう!エリック・シップル

4

4 に答える 4

2

**答えの事前メモ: VS での HTML 検証はしばしば BS です。たとえそれが悪い習慣であっても、IRL で動作するものについて不平を言います。しかし、物事を成し遂げるためにルールを曲げなければならないこともあります。

すべての ASP.NET ページ (2.0 以降) にはClientScriptManagerが付属しています。これを使用して、サーバー側コードから JavaScript を登録します。ページの HTML コントロールがすべて DOM に存在する場合、ページの読み込み後にコントロールにイベントを登録する JavaScript を渡すことができます。

これは、JavaScript を動的に追加するためのページ上の単一の統一された場所を提供しますが、これは悪いことではありません。しかし、それはひどく醜いです。

ASP.NET サーバー コントロール モデルが終焉を迎えるこの時期に、ASP.NET MVC の将来と同じようにイベントを設定することをお勧めします。jQueryのコピーを入手して、Web サイトに追加します。その後、イベントを次のように簡単に登録できます。

  <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>
于 2008-10-08T13:09:32.193 に答える
2

必要な HTML 要素に Javascript を介してイベントを追加できます。これは、サーバーとクライアントのテクノロジを混在させないため、最もクリーンな方法です。さらに、この方法では、(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');
    });
于 2008-10-08T13:14:53.447 に答える
1

の値を設定してWebControl.Attributes["onclick"]も問題ありません。ASP.NET がクライアント側clickハンドラーを必要とする場合、セミコロンで区切られた値が連結されます。

于 2008-10-08T13:08:31.870 に答える
-1

文法やスペルの誤りを修正します。

意味を変えずに明確にする。

細かいミスを修正。

関連リソースまたはリンクを追加します。

常に元の作者を尊重してください。

于 2009-06-19T11:43:41.770 に答える