2015-01-25 1 views
6

에 대해서 POST시 0 바이트입니다.이 뷰포트는 이미지를 올바르게 게시하고 뷰 모델의 HttpPostedFileBase 속성에 바인딩 할 수 있지만 뷰 모델의 기본 클래스에 동일한 속성을 넣을 때 doesn 않습니다 모델이 바이트를 바인드합니다. 이미지 이름은 계속 표시되지만 콘텐츠 스트림은 표시하지 않습니다.HttpPostedFileBase는 기본 뷰 모델 속성 인

나는 내가 생각할 수있는 모든 것을 테스트했다. 도와주세요! 사전에 enter image description here enter image description here enter image description here enter image description here enter image description here

감사 :

이 그림은 전체 이야기를. 명확하지 않은 것이 있으면 알려주세요.

UPDATE 나는이 합법적 버그라고 생각합니다. 나는 아래에 제안을 (1/26 현재)에 게시하기 전에 시도했다. 나는 또한 시도 : 1. 가상으로 기본 속성을 생성하고 자식 클래스 단지 얻는 자식 클래스에 새로운 속성을 만드는 2에 그것을 무시/기본 속성을 거리가 멀다

내 솔루션을 설정 우아하고, 하위 클래스에 "임시"속성을 추가하고 MVC 작업 메서드에서 우선 기본 속성을 설정합니다. 나는 진짜 해결책이 그 자체를 선물하기를 바라고 있으며 나는이 마당을 되돌리고 적절한 수정을 할 수있다.

+1

당신이 스크린 샷에서 알 수없는, 양식에 속성에 enctype = "다중/폼 데이터를"이 있습니까? – Andreas

+0

@ Andreas, 예, 스크린 샷을 추가했습니다. –

+0

두 필드에서 동일한 이미지를 업로드하고 한 번에 하나의 이미지 만 사용해보십시오. "테스트 사례"가 서로 영향을 미치지 않도록하고 싶습니다. – Shoe

답변

0

나라면 모델 클래스 용 v.Simple 맞춤형 바인더를 만들고 손으로 크랭크합니다. 아마 DefaultModelBinder의 약점을 제거하는 것보다 (그리고 앞으로의 유지 관리를 위해 더 명확하게) 더 쉽게 할 수 있습니다. 또한, 그것은 당신이 (불필요하게) 당신의 모델 구조/컨트롤러 동작/단위 테스트를 오염시킬 필요가 없다는 것을 의미합니다.

다음은 기본 모델 바인더를 기준으로 바인더를 만드는 방법에 대한 좋은 기사입니다. http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model-Binder.

HTH