2014-01-30 33 views
3

我不能在ASP.NET MVC项目的服务器端控制器从AngularJS赶上要求:

var appDirective = angular.module('app.directive', []); 
    var xmplService = angular.module('app.service', ['ngResource']); 
    var appFilter = angular.module('app.filter', []);   
    var app = angular.module('app', ['app.service', 'app.directive', 'app.filter', 'solo.table']); 
    xmplService 
    .factory('testResource1', function ($resource) { 
     return $resource('/SoloAngularTable/TestMethod3', { id: '@id' }, { charge: { method: 'POST' } }); 
    }); 
    app 
    .controller('ContentPlaceHolder1Controller', function ($scope, $http, testResource1) {        
     testResource1.find({ id: 123 }, function (data) {        
       alert('success'); 
     }); 
    }); 

在MVC控制器我有一个不能赶上请求的方法:

[HttpPost] 
public JsonResult TestMethod3(int id) 
{ 
    var data = new { User = "Alex" }; 
    return Json(data); 
} 

如何使用AngularJS $资源和捕获请求构建对服务器端的简单请求?

回答

10

find不是$resource默认动作。默认值为:

{ 'get': {method:'GET'}, 
    'save': {method:'POST'}, 
    'query': {method:'GET', isArray:true}, 
    'remove': {method:'DELETE'}, 
    'delete': {method:'DELETE'} }; 

您将必须创建/指定find操作。您当前正在创建/指定charge行动。也许这就是你的意思?

如果你想使用发现,这里是修复:

.factory('testResource1', function ($resource) { 
    return $resource('/SoloAngularTable/TestMethod3', { id: '@id' }, { 
     charge: { method: 'POST' }, 
     find: { method: 'POST' } // Added `find` action 
    }); 
}); 

如果你想用charge,这里是修复:

.controller('ContentPlaceHolder1Controller', function ($scope, $http, testResource1) {        
    testResource1.charge({ id: 123 }, function (data) {        
      alert('success'); 
    }); 
});