L'envoi d'objet JSON à l'API Web

Je suis en train d'essayer de comprendre comment je peux envoyer de l'information à partir d'un formulaire à une API Web d'action. C'est le jQuery/AJAX je suis en train d'utiliser:

var source = { 
        'ID': 0, 
        'ProductID': $('#ID').val(), 
        'PartNumber': $('#part-number').val(),
        'VendorID': $('#Vendors').val()
    }

    $.ajax({
        type: "POST",
        dataType: "json",
        url: "/api/PartSourceAPI/",
        data: JSON.stringify({ model: source }),
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
        }
    });

Voici mon modèle

public class PartSourceModel
{
    public int ID { get; set; }
    public int ProductID { get; set; }
    public int VendorID { get; set; }
    public string PartNumber { get; set; }
}

Voici mon point de vue

<div id="part-sources">
    @foreach (SmallHorse.ProductSource source in Model.Sources)
    {
        @source.ItemNumber <br />
    }
</div>
<label>Part Number</label>
<input type="text" id="part-number" name="part-number" />

<input type="submit" id="save-source" name="save-source" value="Add" />

Voici mon contrôleur de l'action

//POST api/partsourceapi
public void Post(PartSourceModel model)
{
    //currently no values are being passed into model param
}

Ce qui me manque? maintenant, quand je debug et pas à travers ce quand la requête ajax frappe le contrôleur de l'action il n'y a rien transmis dans le modèle param.

  • Avez-vous essayé sans JSON.stringify? data: { model: source }, ou peut-être juste data : source - jQuery gère la conversion pour vous...
  • Oui, j'ai fait un essai sans JSON.stringify, mais cela ne fonctionne pas non plus. J'ai essayé toutes les combinaisons possibles, je pense, de l'AJAX, mais je pense que il y a quelque chose qui me manque sur le contrôleur.. je ne sais pas si, c'est une pure supposition.
  • Quand tu dis "rien" est passé dans le modèle param, voulez-vous dire par exemple "modèle" est null? Ou sont ses valeurs par défaut / null? Qu'advient-il si vous changez de type de modèle de chaîne pour obtenir le raw de la représentation, ou même supprimer le paramètre d'entrée et la sonde de la Demande.Contenu et de la Demande.Les en-têtes des propriétés directement pour savoir ce que le serveur reçoit?
InformationsquelleAutor Cory | 2012-12-13