6
Я получаю некоторые странные результаты при попытке пройти сложный объект JSON к действию в MVC 3.Pass комплекс JSON объекта к MVC 3 действий
The 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 Действие:
<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
Спасибо Дарина !! Это сработало! Я скоро буду вам еще пива! – Sam
Можно ли таким образом разобрать сложные модели и получить их в действии контроллера в виде типизированных объектов? Потому что я пытаюсь сделать то же самое, но коллекцию объекта, хотя и с экземплярами, содержит пустые значения свойств. –
@GustavoRubio, да, можно использовать произвольно сложные объекты и коллекции. Только ссылки на круглые объекты не поддерживаются, потому что они не могут быть сериализованы JSON. –