Frage

Ich versuche, den neuen JSON Modelbinder in MVC 3 zu verwenden, die Scott Guthrie spricht über in sein Blog .

Mein Beispiel ist sehr ähnlich wie die, die er verwendet. Ich habe ein Modell mit drei Werten, die ich POST an den Server versuchen.

Das Modell sieht wie folgt aus:

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

Der JavaScript sieht wie folgt aus:

$("#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);                                        
        }                                                       
    });                                                         
});   

Die Controller-Aktion sieht wie folgt aus:

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

Die Warnung erhalte ich (das eine in der JavaScript-post) gibt mir etwas gefällt das:

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

Ich erwarte die Eigenschaften in dem Modell auf dem Server aufgefüllt werden, aber alle Eigenschaften sind null. Ich verwende ASP.NET MVC 3 Vorschau 1.

War es hilfreich?

Lösung

ich glaube, es sein könnte, weil ASP.NET MVC 3 Vorschau 1 ist nicht die JsonValueProviderFactory automagically Registrierung als erwartet.

Setzen Sie den folgenden Ausschnitt in Global.asax, um es manuell zu registrieren, sollte es Ihr Problem beheben beheben:

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())

Andere Tipps

ziemlich sicher, müssen Sie die folgenden Zeilen ändern

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

Hinweis Ich habe die stringify entfernt und die content

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top