1

Supposons que nous ayons un formulaire html qui puisse afficher l'image du produit avec le nom et la description du produit.Reliure de modèle directe avec Multipart formdata dans asp.net web Api 2.0?

Nom du produit: Description: Image File

Je veux récupérer les valeurs de champ 'ProductName' et 'Description' sans utiliser formdata fournisseur.

API Web Controller -

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); 
     } 

Nous pouvons facilement obtenir toute valeur de la propriété. Mais peut-on faire une fonction api web comme ci-dessous:

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

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

Répondre

0

Vous pouvez l'essayer comme ça, ajoutez simplement le IEnumerable<HttpPostedFileBase> files comme paramètre. Le DefaultModelBinder, s'il y a une donnée de formulaire à plusieurs parties se liera automatiquement à vos types d'arguments.

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

Il affiche l'erreur comme suit du contrôleur WebAPI Impossible de lier plusieurs paramètres (« modèle » et « fichiers ») à la demande de content.I ont essayé avec le modèle commun mais n'a pas obtenu success.I ont également vérifié les données par le violoniste, il semble tout parfait. –