2011-08-01 11 views
0

MVCでAJAXについてもう少し詳しく知りたいと思っています。MVC AJAX JQuery - Javascript関数を呼び出したコントロールのIDをトラップする

現在、MVCビューに次のコードブロックがあります。リンクがクリックされると、コントローラのFlagInappropriate()メソッドが起動され、クリックされたリンクにメッセージが表示され、リンクが無効になるというアイディアです。

<script type="text/javascript"> 
    function flagInappropriate(postId) { 
     var url = "Home/FlagAsInappropriate/" + postId; 
     $.post(url, function (data) { 
      if (data) { 
       $('#LinkAppropriate').text('Post has been flagged'); 
       $('#LinkAppropriate').attr("href", "javascript:void(0);"); 
      } else { 
       alert('Post cannot be flagged'); 
      } 
     }); 
    } 
</script> 

<h1>Index</h1> 
<a href="javascript:flagInappropriate(1)" id="LinkAppropriate">Flag as inappropriate</a> 

現在、これは動作しており、苦情はありません。私の次のステップは、このjavascriptメソッドを呼び出す任意の数のリンクを持つことができるようにすることです。以下の例を参照してください:

<script type="text/javascript"> 
    function flagInappropriate(postId) { 
     var url = "Home/FlagAsInappropriate/" + postId; 
     var callingObject = CallingObjectIDGetter(); 
     $.post(url, function (data) { 
      if (data) { 
       $('#' + callingObject).text('Post has been flagged'); 
       $('#' + callingObject).attr("href", "javascript:void(0);"); 
      } else { 
       alert('Post cannot be flagged'); 
      } 
     }); 
    } 
</script> 

<h1>Index</h1> 
<a href="javascript:flagInappropriate(1)" id="Link1">Flag as inappropriate</a> 
<a href="javascript:flagInappropriate(1)" id="Link2">Flag as inappropriate</a> 
<a href="javascript:flagInappropriate(1)" id="Link3">Flag as inappropriate</a> 
<a href="javascript:flagInappropriate(1)" id="Link4">Flag as inappropriate</a> 
<a href="javascript:flagInappropriate(1)" id="Link5">Flag as inappropriate</a> 

はこのシナリオを考えると、どのように私は、派生とJavaScriptのメソッドを呼び出したオブジェクトを操作するのですか?要するに、私は行の代わりに何を使うでしょうか?var callObject = CallingObjectIDGetter();

ありがとうございます!

答えて

1

代わりに、あなたのマークアップ内のイベントを結合し、なぜあなたはjQueryのを活用し、これを行わない。

マークアップ:

<a href="Home/FlagAsInappropriate/1" id="Link1">Flag as inappropriate</a> 
... more links go here... 

ではJavaScript:

function flagInappropriate(callingObject, url) { 
    $.post(url, function (data) { 
     if (data) { 
      $('#' + callingObject).text('Post has been flagged'); 
      $('#' + callingObject).attr("href", "javascript:void(0);"); 
     } else { 
      alert('Post cannot be flagged'); 
     } 
    }); 
} 

$('a').click(function(e) { 
    e.preventDefault(); 
    flagInappropriate($(this).attr('id'), $(this).attr('href')); 
}); 
関連する問題