2011-08-01 6 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> 

현재이 기능은 작동하며 불만 없습니다. 내 다음 단계는이 자바 스크립트 메서드를 호출하는 링크를 몇 개라도 가질 수있게하는 것입니다. 아래 예제를 참조하십시오.

<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 callingObject = CallingObjectIDGetter();?

감사합니다.

답변

1

대신 마크 업에서 이벤트를 바인딩의, 당신은 왜 jQuery를 활용하고이하지 않는다 :

태그 :

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

자바 스크립트 :

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')); 
});