문제

안녕,

나는 여기서 매우 명백한 것을 놓치고 있다고 확신합니다. 용서 해주세요.

  • 사용 중입니다 MVC 2 베타 그리고 여러 속성, 문자열, int 등이있는 모델이 있습니다.
  • 또한 이미지가 포함 된 바이트 배열이 있습니다.
  • httpget] 속성으로 장식 된 컨트롤러에 편집 작업 메소드가 있습니다.
  • 이 방법은 모델을 다양한 문자열 속성에 바인딩하는 일반적인 텍스트 상자와 바이트 배열/이미지에 바인딩되는 IMG 요소를 갖는 형태 인보기로 전달됩니다.

이것은 모두 작동하는대로 작동하며 이미지를 포함한 모든 데이터를 봅니다. 이것은 모두 꽤 표준적인 것들입니다.

그러나 사용자가 양식을 내 [httppost] 버전의 액션 메소드 버전에 제출하면 매개 변수와 동일한 모델을 수용하는 이미지 속성이 null입니다. 즉, 이미지 속성은 모델 바인딩의 일부인 것으로 보이지 않습니다.

일반적인 이벤트 과정에서 우리는 약간의 검증을 수행하고 모델을 렌더링하여 모델을 다시 전달하여 사용자가 편집이 성공했는지 여부를 확인할 수 있습니다. 그러나 모델을 "그대로"다시 전달하는 것만으로도 모형이 더 이상 모델에 있지 않기 때문에 뷰가 다시 이미지를 렌더링하지 않습니다.

나는 가서 이미지를 다시 얻을 수 있다는 것을 알고 있습니다 (데이터베이스 또는 어디에서나) 모형에 다시 넣기 전에 모델에 다시 넣었습니다. 그게 올바른 끈적 끈적했거나 내가 뭔가를 놓친 것입니까??

안부, 사이먼

도움이 되었습니까?

해결책

모델에서 이진 데이터로 포함 된 이미지를 어떻게 렌더링합니까? Classic WebForms 컨트롤을 사용합니까 (MVC 용어에 반복되지 않음)? 어쨌든, 이미지가보기에만 표시되면 입력 필드 (확인란, 텍스트 필드, 히드 덴) 만 서버에 제출되기 때문에 사용자가 양식을 제출할 때 게시되지 않습니다. 이미지 요소는 아닙니다. MVC에서는 서버에 데이터를 게시하는 모든 작업을 수행하는 것이 간단한 HTML입니다. 컨트롤 상태를 지속 할 ViewState 나 자동적 인 포스트 백이 없습니다. 두 가지 해결책이 있습니다.

  1. 숨겨진 필드에서 이진 데이터를 인코딩하여 다시 게시됩니다.
  2. (더 나은) 클라이언트와 서버간에 이미지 데이터를 앞뒤로 보내지 않지만 사용자가 새 이미지를 제공했는지 여부를 감지하고 (이를 위해 파일 입력을 사용 할 것으로 예상합니다) 사용자가 비어있는 파일을 왼쪽으로 남겨두면 이미지가 이미 데이터베이스에 저장된 모델로 다시 표시합니다. 그렇지 않으면 데이터베이스에서 이미지를 업데이트하십시오.

어쨌든, 모델의 이진 데이터에서 이미지를 어떻게 표시하는지 궁금합니다. IMG 태그의 SRC 속성에서 해당 동작의 URL을 사용하거나 이미지를 파일로 저장하고 바이너리 데이터 대신 URL을 사용하는 컨트롤러 작업을 작성하는 것이 간단하다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top