2017-08-21 13 views
1

商品名と説明を含む商品画像を掲載できるhtmlフォームがあるとします。asp.net web Api 2.0のMultipartフォームデータとの直接モデルバインド?

製品名: 説明:私は、プロバイダFORMDATAを使用せずに、 '商品名' と '説明' フィールドの値を取得したい イメージファイル

ウェブAPIコントローラ -

if (!Request.Content.IsMimeMultipartContent()) 
     { 
      throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
     } 

try 
     { 
      // Read the form data. 
      await Request.Content.ReadAsMultipartAsync(provider); 

      // Show all the key-value pairs. 
     foreach (var key in provider.FormData.AllKeys) 
     { 
      foreach (var val in provider.FormData.GetValues(key)) 
      { 
       Trace.WriteLine(string.Format("{0}: {1}", key, val)); 
      } 
     } 
     } 
     catch (System.Exception e) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); 
     } 

我々は簡単にすべてのプロパティ値を取得することができます。しかし、我々は、Web API関数以下のように行うことができます:

[HttpPost] 
    public IHttpActionResult Upload(ProductInfo model){ 
    return Content(HttpStatusCode.OK, true); 
} 

Public Class ProductInfo { 
    public string ProductName{ get; set; } 
    public string Description{ get; set; } 
} 

答えて

0

あなただけのパラメータとしてIEnumerable<HttpPostedFileBase> filesを追加し、このようにそれを試すことができます。 DefaultModelBinderは、複数の部分からなるフォームデータがある場合、データは自動的に引数の型に正しくバインドされます。

[HttpPost] 
public IHttpActionResult Upload(ProductInfo model, 
           IEnumerable<HttpPostedFileBase> files) 
{ 
    return Content(HttpStatusCode.OK, true); 
} 
+0

それはリクエストのcontent.Iに複数のパラメータ(「モデル」と「ファイル」)をバインドできませんWebAPIのコントローラ から、次のようなエラーを示すには、共通のモデルと試みたがsuccess.Iを持って取得していませんまた、フィドラーを介してデータをチェックし、それはすべての完璧と思われる。 –

関連する問題