asp net web api를 사용하는 데있어서 새로운 기능입니다. 내 웹 API에서 UploadDocument 기능을 만들고 싶습니다. 그래서이 방법을 만듭니다. 클라이언트에서aspnet web api 다중 파트 양식 데이터에서 modelstate를 사용하여 유효성을 검사하는 방법은 무엇입니까?
api.post('vendor/UploadDocument', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
컨트롤러
public class VendorController : ApiController {
[HttpPost]
public HttpResponseMessage UploadDocument()
{
try
{
if (!Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var request = HttpContext.Current.Request;
var model = new UploadDocumentViewModel();
model.field1 = request.Form["field1"];
model.field2 = request.Form["field2"];
model.Document = request.Files["Document"];
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
else //ModelState is not valid
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
catch (Exception exception)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
}
모델
public class UploadDocumentViewModel
{
[Required]
public string field1 { get; set; }
[Required]
public int field2 { get; set; }
[Required]
public HttpPostedFile Document { get; set; }
}
내 문제는 컨트롤러 ModelState에서 항상 비어 있습니다. 코드를 추가하려고 시도했습니다.
Validate(model);
if (ModelState.IsValid)...
그러나 작동하지 않았습니다. 멀티 파트 양식 데이터에서 모델 데이터 주석의 유효성을 검사 할 수 있습니까?
POST 메소드에는 모델이 없으므로 유효성을 검사 할 항목이 없습니다. 메소드'UploadDocument (UploadDocumentViewModel model)'을 작성하면 게시 된 값과 바인드됩니다 (부작용으로'int'는'null'이 될 수 없습니다 - 기본적으로 필요합니다. 그래서'[Required]'속성은 필요하지 않습니다. 원하는 특정 오류 메시지) –