2016-12-05 2 views
0

컨트롤러에 대한 작업 링크를 통해 바이트 배열을 전달하려고 할 때 null 값이 나타납니다. 저는 MVC를 처음 사용합니다. 기본적으로, 나는 pdf로 심상 (바이트 배열)를 다운로드 할 필요가있다.@actionlink를 통해 바이트 배열을 전달해야합니다.

보기 :

if(Model.checkimage != null){ 
    @html.ActionLink("Download PDF", "DownloadPDF", "Transaction", new {Check = Model.checkimage}); 
} 

컨트롤러 : 액션 메소드의 인수로

public ActionResult downloadPDF (byte[] Check) 
+0

이것이 가능할지라도 거의 확실하게 쿼리 문자열 제한을 초과하고 예외가 발생합니다. 메서드의 파일 ID를 전달하십시오. –

답변

0

합격 바이트 배열이 좋은 생각이 아니다. 데이터베이스 또는 파일에서 이들을 검색하는 경우, 아마도 고유 한 식별자 또는 파일 경로를 인자로 전달할 수 있습니다. & 그러면 컨트롤러에 논리를 씁니다.

0

Mady의 답변이 더 나은 대안이지만 실행 가능하지 않은 경우 (예 : 다른 위치에 바이트 배열을 저장하지 않는 경우) 항상 Base-64를 바이트 배열로 인코딩하여 전달할 수 있습니다 액션 메소드

System.Convert.ToBase64String(Model.checkimage) 

액션 메소드에서 다시 바이트 배열로 변환해야합니다.

System.Convert.FromBase64String(imageData) 

Base-64 인코딩은 약간의 부풀림 (~ 33 % 더 많은 바이트)을 추가합니다. 또한 일부 브라우저에는 URL의 길이 제한이 있으므로 일부 제한에 가까워지지 않도록 할 수 있습니다.

관련 문제