jQuery AJAX poste de Contrôleur MVC objet — demande de montre null

Je sais que je suis absent quelque chose dans les détails ici.

Problème

En dépit de Googler, en essayant d'exemples, différents formats, etc, la requête AJAX que j'envoie toujours est validé comme ayant tous les champs vides, mais ne pas être null.

Je pense que je ne suis pas en envoyant des choses dans le format approprié pour le contrôleur de la reconnaître comme un objet, mais je ne suis pas sûr de ce que.

Fiddler: Ce que ma requête ressemble à

Avec quelques données factices:

jQuery AJAX poste de Contrôleur MVC objet — demande de montre null

Code: Modèle De Classe

public class ContactUsMessage
{
    public string Email { get; set; }
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
    public string Message { get; set; }
}

Code: WebAPI Contrôleur

    [HttpPost]
    public HttpResponseMessage NewMessage(ContactUsMessage messageToSend)
    {
        if (messageToSend == null)
        {
            var sadResponse = Request.CreateResponse(HttpStatusCode.BadRequest, "Empty Request");
            return sadResponse;
        }

        var messageValidator = new ContactUsMessageValidator();
        var results = messageValidator.Validate(messageToSend);
        var failures = results.Errors;
        var sadString = "";
        if (!results.IsValid)
        {
            foreach (var error in failures)
            {
                sadString += " Problem: " + error.ErrorMessage;
            }
            var sadResponse = Request.CreateResponse(HttpStatusCode.NotAcceptable, "Model is invalid." + sadString);
            return sadResponse;

        }
        else
        {
            SendContactFormEmail(messageToSend.Email, messageToSend.Name, messageToSend.PhoneNumber, messageToSend.Message);

        }

Code: JavaScript sur la Page

function sendSubmissionForm() {

    var dataObject = JSON.stringify(
        {
            messageToSend: {
                'Email': $('#inpEmail').val(),
                'Name': $('#inpName').val(),
                'PhoneNumber': $('#inpPhone').val(),
                'Message': $('#inpMessage').val()
            }
        });

    $.ajax({
        url: '/api/contactus/newmessage',
        type: 'POST',
        done: submissionSucceeded,
        fail: submissionFailed,
        data: dataObject

    });


}

OriginalL'auteur SeanKilleen | 2013-07-21