Je reçois des résultats étranges tout en essayant de passer un objet JSON complexe à une action dans MVC 3.passe complexe JSON objet à un MVC 3 action
Le Locations
sont renseignés sur le modèle des paramètres d'action, mais le nom et l'emplacement ne sont pas.
Si je fais ko.toJS(testViewModel)
, alors le nom et l'emplacement sont là, mais les emplacements sont vierges ???
J'utilise knockout.js:
var testViewModel = {
Name: ko.observable("Joe Bob"),
Locations: ko.observableArray([
{ ID: 1, Name: "Salem, OR" },
{ ID: 2, Name: "Big Bear Lake, CA" },
{ ID: 3, Name: "Big Bear City, CA" }
]),
Position: ko.observable("Manager")
}
l'envoyer par jQuery ajax:
$.ajax({
url: "/ClaimsAuthority/Home/TestIt",
type: "POST",
data: ko.toJSON(testViewModel),
success: function (data, status, xhr) {
//ko.applyBindings(data);
}
});
action MVC:
<HttpPost()>
Public Function TestIt(model As TestModel) As ActionResult
Return Json(model)
End Function
Modèles:
Public Class TestModel
Public Property ID As Integer
Public Property Name As String
Public Property Locations As ICollection(Of LocationModel)
Public Property Position As String
End Class
Public Class LocationModel
Public Property ID As Integer
Public Property Name As String
Public ReadOnly Property DisplayText As String
Get
Return String.Format("({0}) {1}", ID, Name)
End Get
End Property
End Class
Merci Darin !! Ça a marché! Je te dois bientôt une autre bière! – Sam
Est-il possible d'analyser des modèles complexes de cette façon et de les recevoir dans l'action du contrôleur en tant qu'objets typés? Parce que j'essaye de faire la même chose mais la collection de l'objet, bien qu'avec les instances, vient avec des valeurs de propriété vides. –
@GustavoRubio, oui, il est possible d'utiliser des objets et des collections arbitrairement complexes. Seules les références d'objets circulaires ne sont pas prises en charge car elles ne peuvent pas être sérialisées au format JSON. –