2017-06-16 1 views
1

En utilisant le code ci-dessous, je suis en mesure de transmettre ce contenu à mon WebAPI qu'il reçoit commedonnées données/enfant JSON.stringify afin d'envoyer à WebAPI

public void Post(Business.Entities.api.newsalert alert) 
{ 
    //do stuff here 
} 

category = $('#dt_category').val(); 
title = $('#inputTitle').val(); 
url = $('#inputURL').val(); 
comments = $('#inputComments').val(); 
subject = "News Alert/Alerte Nouvelles: " + title; 

var dataJSON = { 
    userid: username, 
    to: "[email protected]", 
    url: url, 
    subject: subject, 
    title: title, 
    source: "My company", 
    comments: comments, 
    category: category 
}; 

$.ajax({ 
    type: 'POST', 
    url: "http://mywebserver/api/NewsAlerts", 
    data: JSON.stringify(dataJSON), 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
     q.resolve(); 
    } 
}); 

Cependant, mon patron m'a demandé pour que les catégories d'utilisation sélectionnez plusieurs ..

donc je l'ai fait

category = $('#dt_category').val(); //apples, oranges, peaches 
    title = $('#inputTitle').val(); 
    url = $('#inputURL').val(); 
    comments = $('#inputComments').val(); 
    subject = "News Alert/Alerte Nouvelles: " + title; 

    var categories = []; 
    $(category).each(function (index) { 
     categories.push({ 'category': category[index] }); 
    }); 

    var dataJSON = { 
     userid: username, 
     to: "[email protected]", 
     url: url, 
     subject: subject, 
     title: title, 
     source: "My company", 
     comments: comments, 
     category: categories 
    }; 

    $.ajax({ 
     type: 'POST', 
     url: "http://mywebserver/api/NewsAlerts", 
     data: JSON.stringify(dataJSON), 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      q.resolve(); 
     } 
    }); 

Mais quand mon WebAPI reçoit le ajax Put, il est toujours nul. Je suppose que je dois en quelque sorte faire les catégories dans une sorte de nœud enfant, mais je ne suis pas sûr.

+1

est votre modèle 'Business.Entities.api.newsalert' en attente d'une liste? signifiant 'Business.Entities.api.newsalert.Category' est' typeof Liste ' – Munzer

+1

vous pouvez essayer en changeant' category' datatype comme 'Liste ' –

+0

Duh, n'avait pas considéré que mon objet de gestion pourrait être le problème, juste supposé que ce serait la sérialisation json. Je vais y jeter un coup d'oeil, merci. –

Répondre

1

Votre objet de requête API doit contenir une propriété qui est un type de collection d'une classe avec la propriété "category".

public class newsalert 
{ 
    //Other Properties   

    [JsonProperty(PropertyName = "category")] 
    IList<Category> Categories {get;set;} 
} 

public class Category 
{ 
    public string category {get;set;} 
}