Angular从MVC获取数据JsonResult

时间:2016-04-28 14:59:33

标签: javascript angularjs asp.net-mvc ngresource angularjs-resource

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

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

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

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);
    }
}

该服务可以调用Action,因为我看到代码点击我的断点,我可以看到newId也设置为42,但我从未看到它回到角度方面。

1 个答案:

答案 0 :(得分: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.');
        }
    );
}