AngularJS не мога да изпратя обект, който съдържа масив в себе си


1
Здравейте. През html формичка със AngularJS($resource) изпращам обект до .NET Web API контролер. Когато javascript обектът няма в себе си масив, а само string,int и т.н HTTP Post метода във контролера без проблем взима данните. Когато вкарам масив обаче в JS обекта, ми хвърля грешка 500 Server error. Опитах се да JSON.Stringify(array) - така не ми хвърли грешка, но ICollection пропъртито в C# обекта ми е null. Може би трябва да се направи някаква сериализация от страна на JS или на сървъра, не съм сигурен.
http://pastebin.com/U1fUvegC - ето това ми е AngularJS кода - имам функция addProperty, с която вкарвам динамично обекти в масива array. След като попълня формичката, на JS обекта му задавам пропърти Friends да държи този масив. C# обекта си има пропърти Friends, което е ICollection. В базата си имам и ентити, което да отговаря на обекта, който се намира във Friends масива.
П.П Трябва да е $scope.array - грешка от невнимание.



Отговори



0
Проблемът беше, че използвам angular.toJson на масива, който се намира в обекта, който изпращам и MVC контролерът го получава като string и затова не може да го биндне към C# пропъртито(ICollection).
angular.toJson трябва да се използва върху целия обект

от Hachiko (380 точки)


0
Angular JS има вградено $http. Преди да пратиш нещо, трябва да направиш JSON.stringify на обекта.

от lithical (992 точки)


0
Да, знам за $http, но има и $resource, който се използва при restful, а .NET Web API е точно restful. Няма кой знае каква разлика в моя случай дали ползвам $http или $resource сървиса. Както казах, пробвах със JSON.Stringify, но масива във C# обекта си остава null - явно не го биндва както трябва или де да знам

от Hachiko (380 точки)

0
аз съм работил само с Node JS и съм нямал проблеми с него. Явно проблемът е в .Net. Какво правиш със JSON-a като го получиш на сървъра?

от lithical (992 точки)


1
Дай кода на сървъра. Най-вероятно там е проблема. Array празен ли се изпраща или?

от ivaylo.kenov (30760 точки)


0
http://pastebin.com/1ZnVrtKE Ето. AngularJS и Web Api са ми в отделни проекти и не мога да дебъгна и да вляза в метода, когато изпращам заявката и да видя дали е празен масива. Знам, че като добавя ново ентити и то, ако има в себе си други ентитита, те също се добавят рекурсивно.

от Hachiko (380 точки)

0
Виж си в Network таба какво се изпраща при тази заявка?

от ivaylo.kenov (30760 точки)



0
Пусни си fiddler, за да видиш кво става.Най-вероятно клиента ти не изпраща това, което сървъра очаква.