게시 된 파일 (<input type="file" />
)을 ASP.NET MVC 의 모델 바인딩에 참여 시키려면 사용자 지정 모델 바인더의 요청 컨텍스트를 수동으로 보지 않아도됩니다 게시 된 파일 만 입력으로 사용하는 별도의 작업 방법을 만들지 않고?ASP.NET MVC는 매개 변수가 모델 일 때 파일 모델 바인딩을 게시했습니다.
나는이 일 것이라고 생각했을 것이다 :
class MyModel {
public HttpPostedFileBase MyFile { get; set; }
public int? OtherProperty { get; set; }
}
<form enctype="multipart/form-data">
<input type="file" name="MyFile" />
<input type="text" name="OtherProperty" />
</form>
public ActionResult Create(MyModel myModel) { ... }
그러나 위의 시나리오를 주어, MyFile
바인딩 컨텍스트에서 값 공급자의 값도 일부가 아닙니다. (. OtherProperty
은 물론이다) 그러나 나는이 작업을 수행 할 경우 작동 :
public ActionResult Create(HttpPostedFileBase postedFile, ...) { ... }
, 왜이 매개 변수가 모델입니다 때 발생하는 바인딩 않으며, 나는 그것이 작동하는 방법을 만들 수 있습니까? 사용자 정의 모델 바인더를 사용할 때 아무런 문제가 없지만 Request.Files["MyFile"]
을 보지 않고 어떻게 사용자 정의 모델 바인더에서이 작업을 수행 할 수 있습니까?
일관성, 선명도 및 테스트 용이성을 위해 요청 문맥을 수동으로 검사하지 않고 게시 된 파일에 바인딩 된 모델을 포함하여 모델의 모든 속성을 자동 바인딩하는 코드를 제공하고 싶습니다. 현재 the approach Scott Hanselman wrote about을 사용하여 모델 바인딩을 테스트하고 있습니다.
아니면 잘못된 방식으로 진행하나요? 어떻게 해결할 수 있니? 또는 Request.Form과 Request.Files의 분리 이력 때문에 설계 상으로는 가능하지 않습니까?
* 참고 : * 양식의'enctype' 속성을 간과하지 마십시오. 그것은''multipart/form-data ''로 지정되어야합니다. 그렇지 않으면 입력 태그의'name' 속성과 일치하는 이름을 가진'HttpPostedFileBase' 인자는 POST에서'null'을 유지합니다. –
동일한 사용했지만 오류가 있어요 : - 내 $ .ajax 설정 한 여러 매개 변수를 바인딩 할 수 없습니다 : - 형식 : 'POST', dataType : 'json', contentType : 'multipart/form-data' , 데이터 : formData – ujjaval