2012-06-02 2 views
0

뷰의 단추와 관련된 파일 이름 및 GUID를 전달하여 단추를 클릭 할 때 Web API 컨트롤러에서 메서드를 호출하려고합니다.MVC 3보기에서 API 컨트롤러에서 GET 메서드 호출

다음은 코드입니다. I 매개 변수로하고 FileNameGUID 전달하여 FileDownload 액션을 호출하고, 상기 코드에서

<div style="float: left; width: 75%; margin-left: 10px;"> 

@(Html.Telerik().Grid((IEnumerable<FileModel>)ViewData["DocumentList"]).Name("DocumentList").Template(@text @Html.ActionLink("FileDownload", "FileDownload", new { file = item.FileName, GuID = item.DocumentGuID }) /text).Width(10); 

. 이제 samplecontroller에 메서드를 호출하고 " Filename"및 " Guid"을 매개 변수로 전달하려고합니다.

public samplecontroller:webapicontroller 
{ 
    public downLoad(int,guid) 
} 

보기의 버튼을 클릭 할 때 "downLoad"메서드는 어떻게 호출 할 수 있습니까?

답변

0

아마도 대부분 비동기 메서드를 호출하려면 javascript를 사용해야합니다. jQuery를 아래처럼 뭔가 도움이 될 것입니다 :

다른 옵션이 있습니다
Jquery script inside the view, in document on load function: 
    $('#buttonid').bind('click', function(){ 
      var filename = $('#file').attr('name'); 
     var guid = $('#file').attr('guid'); 
     $.getJSON("api/samplecontroller/download?file=" + filename +"&guid=" +guid, 
      function (data) { 
       // On success 

      }); 

    }); 

Controller action: 
    public samplecontroller:Apicontroller 
    { 
     public Download([fromuri]string fileName, [fromuri]string guid) 
     { 

     } 
    } 

당신은 파일 이름과 GUID를 통과 UriTemplate와 열린 우리당의 요청을 포맷하는 방법에 대한 생각.

+0

html.Telerik() 태그 내에서 jquery 함수를 그리드 내에서 호출 할 수 있습니까? – user1400915

+0

더 좋은 방법은 javascript를 눈에 거슬리지 않게 사용하는 것입니다. [link] http://en.wikipedia.org/wiki/Unobtrusive_JavaScript 그리드 아이템을 렌더링 할 때 클래스 나 ID로 단추 나 링크에 태그를 지정하십시오. 유사한 항목이 많으면 ID 대신 'mybtnclass'와 같은 모든 항목에 더미 클래스를 할당하십시오. 그런 다음 $ ('. mybtnclass')와 같은 클래스로 이벤트를 바인딩 할 수 있습니다. bind ('click', function() {..}); –

+0

다음은 동작 링크에 클래스를 추가하는 방법입니다. http://stackoverflow.com/questions/8490310/add-css-class-to-actionlink-of-asp-net-mvc –

관련 문제