私はasp net web apiを使用するために新規です。 私のWeb 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'にはなりません - デフォルトで必須です。あなたの特定のエラーメッセージが欲しい) –