Question

Je suis en train d'utiliser les nouveaux ModelBinders JSON dans MVC 3 que Scott Guthrie parle de dans son blog .

Mon exemple est très semblable à celui qu'il utilise. J'ai un modèle avec 3 valeurs que je suis en train de POST au serveur.

Le modèle ressemble à ceci:

public class CommentViewModel
{
    public string Product { get; set; }
    public string Text { get; set; }
    public string Author { get; set; }
}

Le code JavaScript ressemble à ceci:

$("#addComment").click(function () {

    var comment = {
        Product: $("#productName").html(),
        Text: $("#comment").val(),
        Author: $("#author").val()
    };

    alert("value=" + JSON.stringify(comment));

    $.ajax({                                                    
        url: "/Home/Add",                                       
        type: "POST",                                           
        data: JSON.stringify(comment),                          
        datatype: "json",                                       
        contentType: "application/json; charset=utf-8",         
        success: function (data) {                              
            alert(data);                                        
        }                                                       
    });                                                         
});   

L'action du contrôleur ressemble à ceci:

[HttpPost]
public ActionResult Add(CommentViewModel comment)
{
      // ...
}

L'alerte que je reçois (l'un à l'intérieur du poste JavaScript) me donne quelque chose aime ceci:

value={"Product":"Classic","Text":"the comment","Author":"me"}

J'attends les propriétés du modèle à être renseigné sur le serveur, mais toutes les propriétés sont nulles. J'utilise ASP.NET MVC 3 Preview 1.

Était-ce utile?

La solution

Je pense que ce pourrait être parce que ASP.NET MVC 3 Preview 1 n'enregistre pas le JsonValueProviderFactory automagiquement comme prévu.

Mettez l'extrait suivant dans Global.asax pour enregistrer manuellement, il devrait résoudre résoudre votre problème:

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())

Autres conseils

à peu près sûr que vous devez changer les lignes suivantes

$.ajax({                                                    
    url: "/Home/Add",
    type: "POST",
    data: comment,
    datatype: "json",
    success: function (data) {
        alert(data);
    }
});

Avis que j'ai enlevé le stringify et le contenttype

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top