Я получаю странные результаты при попытке передать сложный объект JSON в действие в MVC 3.
Locations
заполняются в модели параметров действия, но имя и местонахождение - нет.
Если я выполню ko.toJS(testViewModel)
, то имя и местоположение есть, но адреса пусты???
Я использую 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")
}
Отправляю через jQuery ajax:
$.ajax({
url: "/ClaimsAuthority/Home/TestIt",
type: "POST",
data: ko.toJSON(testViewModel),
success: function (data, status, xhr) {
//ko.applyBindings(data);
}
});
MVC Action:
<HttpPost()>
Public Function TestIt(model As TestModel) As ActionResult
Return Json(model)
End Function
Модели:
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