1

У меня есть следующее Действие в моей MVC контроллере:Угловые получить данные из MVC JsonResult

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(newId); 
} 

Это работает и возвращает идентификатор, я вижу его возвращением в Скрипач, например, как 42. Однако мой угловой код это Безразлично 't получить номер, но возвращаемое значение отображается как данные: b, которое содержит обещание. Есть ли способ получить число, возвращаемое в данных метода успеха? Мой угловой код ниже:

vm.save = function() { 
TestRepository.save(vm.MyData).$promise.then(
    function (data) { 
     // Here data is returned as data : b, not the number 
    }, 
    function() { 
     alert('An error occurred while creating this record.'); 
    }); 
} 

моя служба

function TestRepository($resource) { 
return { 
    save: function (item) { 
     return $resource('/mysite/setup/Save').save(item); 
    } 
} 

Услуга может вызвать действие, так как я вижу код ударил точки останова, я могу видеть NewID также установлен на 42, но я никогда не видел, чтобы он возвращался с угловой стороны.

+0

Можете ли вы опубликовать результат 'console.log (данных);' – Hackerman

+0

@Hackerman, которая выводит б {$ обещание: D, $ постановило: истинно} Если я верну объект, а не только номер, который он работает, данные содержат объект, возможно, номер не будет отправлен обратно как JSON, так как Fiddler показывает, что ответ обратно равен 42, а не в формате JSON. – Paritosh

ответ

3

$resource doesn't support primitive response

Как $resource обычно используется для подключения RESTful службы, делать передачи данных в хорошо сформированной объект, то есть как все API делает. Отправка данных из API в примитивном стиле препятствует людям использовать плохой шаблон. В идеале он должен возвращать только объект JSON.

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(new {Id = newId}); 
} 

Код

vm.save = function() { 
    TestRepository.save(vm.MyData).$promise.then(
     function (data) { 
      console.log(data.Id) 
     }, 
     function() { 
      alert('An error occurred while creating this record.'); 
     } 
    ); 
}