2011-01-28 4 views
1

저는 mvc와 jQuery를 처음 접했고 웹 개발은 일반적으로 매우 유용했습니다. 나는 최근에 개발자가 설계 한 사이트를 통제해야했고, 사용하지 않아야하는 트리 뷰 컨트롤을 내가 여기에 들어 가지 않는 이유 때문에 변경해야했습니다. 하지만 기본적으로 트리 뷰의 노드 클릭 이벤트에서 리소스를 다운로드 할 수 있어야합니다. 이벤트를 처리하는 방법을 알고 있지만 jquery를 통해 내 MVC 컨트롤러에 호출하는 방법을 알아낼 수 없습니다. 리소스를 다운로드하기 위해 호출해야하는 컨트롤러 기능의 경로는/Resources/DownloadResource입니다. 내가 $.post("/Resources/DownloadResourceLink", { id: value }); 같은 것을 시도하고 내가 단계별 때, 모든 것이 올바른 값을 받고있다jQuery와 함께 mvc 컨트롤러를 호출하십시오.

 public ActionResult DownloadResource(string id) 
     { 
      var resource = 
       _resourceService.GetResourceQuery(new Specification<Resource>(r => r.ResourceId == new Guid(id))).FirstOrDefault(); 

     return new BinaryResult 
     { 
      FileName = resource.FileName, 
      ContentType = string.Format("application/{0}", Path.GetExtension(resource.FileName)).Replace(".", ""), 
      IsAttachment = true, 
      Data = System.IO.File.ReadAllBytes(resource.FilePath) 
     }; 
    } 

,하지만 다운로드 : 여기에 대한 코드입니다. 어떤 도움이라도 분명히 인정 될 것입니다!

답변

0

둘러보기 This 기본적으로 MVC 액션 주소는 아약스 함수의 url 속성으로 호출됩니다.

0

문제는 ID를 전달하는 방법 일 수 있습니다. 내 경험에 의하면, 나는, 나는 호출이 기대된다 content type이 있는지 확인하십시오 것 작동하지 않는 경우 URL을 (/ 액션/컨트롤러/ID 경로)

$.post("/Resources/DownloadResourceLink/" + value); 

에 데이터를 추가해야 다운로드 유형에 맞게 수정하십시오.

그래도 해결되지 않으면 문제가 게시물 일 수 있습니다.

$.ajax()을 살펴 보시기 바랍니다. 기본값은 get입니다. 다운로드에 필요할 수 있습니다. 나는 컨텐트 타입이 무엇일 필요가 있는지 알지 못한다. (당신은 액션 메소드에서 그것을 추론 할 수 있어야한다.) 그러나 당신의 호출은 이와 같이 보일 것이다.

$.ajax({ 
    url: '/Resources/DownloadResourceLink', 
    params: { id } 
}); 
2
<script type="text/javascript"> 

    $(document).keypress(function (e) 
    { 
     if (e.which == 13) 
     { 
      location.href = '@Url.Action("ActionName", "Controllername")'; 
     } 
    }); 

</script> 
관련 문제