ASP.NET MVC 3 JSON Modelbinders nicht funktioniert
-
26-09-2019 - |
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.
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