Angular 从 MVC JsonResult 获取数据

Angular get data from MVC JsonResult

我的 MVC 控制器中有以下操作:

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

这会运行并且 returns 一个 ID,我看到它在 Fiddler 中返回例如 42。但是我的 angular 代码没有得到数字,但返回值显示为data : b,其中包含一个承诺。有没有办法获取成功方法的数据中返回的数字?我的 angular 代码如下:

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,但我从未看到它在 angular 端返回。

$resource doesn't support primitive response

由于$resource通常用于连接RESTFUL服务,所以在格式良好的对象中发送数据,这就是所有API所做的。从 API 以原始类型发送数据会阻止人们使用错误的模式。理想情况下它应该只有 return JSON object.

[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.');
        }
    );
}