sto ottenendo alcuni risultati strani durante il tentativo di passare un oggetto JSON complessa per un'azione in MVC 3.Passo Complesso JSON oggetto a un MVC 3 Azione
Il Locations
sono popolate sul modello parametro di azione, ma il nome e la posizione non lo sono.
Se faccio ko.toJS(testViewModel)
, quindi il nome e la posizione ci sono, ma le posizioni sono vuote ???
sto usando 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")
}
inviandola tramite jQuery Ajax:
$.ajax({
url: "/ClaimsAuthority/Home/TestIt",
type: "POST",
data: ko.toJSON(testViewModel),
success: function (data, status, xhr) {
//ko.applyBindings(data);
}
});
MVC azione:
<HttpPost()>
Public Function TestIt(model As TestModel) As ActionResult
Return Json(model)
End Function
Modelli:
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
Grazie Darin !! Ha funzionato! Ti devo molto bene un'altra birra! – Sam
È possibile analizzare i modelli complessi in questo modo e riceverli nell'azione del controller come oggetti digitati? Perché sto cercando di fare la stessa cosa ma la collezione dell'oggetto, sebbene con le istanze, viene fornita con valori di proprietà vuoti. –
@GustavoRubio, sì, è possibile utilizzare oggetti e collezioni arbitrariamente complessi. Solo i riferimenti agli oggetti circolari non sono supportati perché non possono essere serializzati JSON. –