estoy consiguiendo resultados un tanto extraños al tratar de pasar un objeto JSON complejo para una acción en MVC 3.Pass Complejo JSON objeto de una acción MVC 3
El Locations
están pobladas en el modelo de parámetro de acción, pero el nombre y la ubicación no lo son
Si hago ko.toJS(testViewModel)
, entonces el nombre y la ubicación están ahí, pero las ubicaciones están en blanco ???
que estoy 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")
}
de enviarlo a través de jQuery Ajax:
$.ajax({
url: "/ClaimsAuthority/Home/TestIt",
type: "POST",
data: ko.toJSON(testViewModel),
success: function (data, status, xhr) {
//ko.applyBindings(data);
}
});
MVC Acción:
<HttpPost()>
Public Function TestIt(model As TestModel) As ActionResult
Return Json(model)
End Function
Modelos:
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
Gracias Darin !! ¡Eso funciono! ¡Te debo otra cerveza muy pronto! – Sam
¿Es posible analizar modelos complejos de esta manera y recibirlos en la acción del controlador como objetos tipados? Porque estoy tratando de hacer lo mismo, pero la colección del objeto, aunque con las instancias, viene con valores de propiedad vacíos. –
@GustavoRubio, sí, es posible usar objetos y colecciones arbitrariamente complejos. Solo las referencias a objetos circulares no son compatibles porque no pueden ser serializadas por JSON. –