2016-06-01 2 views
0

Я пытаюсь передать сложный объект из углового обслуживания в контроллер mvc. Ниже код-:Передача сложного объекта из углового serviv в контроллер mvc

Угловая контроллер

$scope.saveData = function() { 

var resultData = new Object(); 
resultData.Name = $scope.Name; 
resultData.Address = new Object(); 
resultData.Address = $scope.Address; 
resultData.Address.Contact = $scope.Address.Contact; 


    var promiseOrganization = AngularService.saveResult(resultData); 

    promiseOrganization.then(function (result) 
     { 
      alert("Saved successfully."); 
     } 
    ) 
} 

Угловая служба

this.saveResult = function (resultData) { 
    return $http.post("/Form/SaveData/" + resultData); 
    } 

MVC контроллер

[System.Web.Http.HttpPost] 
    public string SaveData([FromBody] resultData data) 
    { 

     //operation to perform 
     return "Data Reached"; 
    } 

Когда я пытаюсь передать сложный объект из Угловой службы в контроллер mvc. Это дает мне null, т. Е. Объект становится null.

Просьба предложить.

ответ

0

Измените пост функцию на что-то вроде этого,

$http.post('/Form/SaveData/', resultData) 
     .success(function (data, status, headers, config) { 
     }) 
     .error(function (data, status, headers, config) { 
     }); 
0

Вы не правы в вашей команде после. Оно должно быть:

$http.post("/Form/SaveData/",{resultData: resultData}); 
+0

попробовал это также все еще не работает – user3068811

2

При использовании $http.post метода нужно передать объект данных в качестве второго paramenter. Вы можете прочитать на нем here

enter image description here

Так что ваш угловой код должен выглядеть

$http.post("/Form/SaveData/", data); 

Затем нужно на стороне сервера представления данных, которые вы передаете контроллер WebAPI

public class MyCustomObject 
{ 
    public string   Name { get; set; } 
    public MyCustomAddress Address { get; set; } 
} 

public class MyCustomAddress 
{ 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
    public string Contact  { get; set; } 
} 

Вам необходимо обновить свой код контроллера WebApi, чтобы использовать новый класс на стороне сервера в качестве параметра. Обратите внимание, что я не использую в [FromBody] атрибуте как this ссылки объясняет вам только нужно использовать атрибут [FromBody], если вы хотите, чтобы заставить Web API читать простой тип из тела запроса (ваш тип представляет собой сложный тип)

чтобы заставить Web API для чтения простого типа из тела запроса, добавьте [FromBody] атрибут параметра

Обновленный код WebAPI контроллер без атрибут [FromBody]:

[System.Web.Http.HttpPost] 
public string SaveData(MyCustomObject data) 
{  
    //operation to perform 
    return "Data Reached"; 
} 
+0

все еще получает нулевой объект в конце контроллера mvc – user3068811

Смежные вопросы