这是我正在尝试做的事情:
在我的Web API控制器(NotesController)中,我有这个方法:
public HttpResponseMessage Put(string date, string notes)
它收到格式为yyyy-MM-dd的日期和一些任意文本。
我已经按照现在的方式在Angular中声明了我的资源:
App.factory('NotesFactory', function ($resource) {
return $resource('/api/Notes/', {}, { update: { method: 'PUT' } });
});
最后,我的Angular笔记控制器上有一个saveNotes()方法,如下所示:
$scope.saveNotes = function ()
{
NotesFactory.update({ date: date, notes: $scope.notes }, function () {
...
});
}
我在使用update()方法在Web API中正确调用Put()方法时遇到问题。
我收到的错误是:
“在控制器'Notes'上找不到匹配的操作 请求“
正如我所说,我不确定这究竟应该如何运作。如果有人能提供一个适合我情况的具体例子,那真的很高兴。我已经来回阅读$ resource文档无济于事。
任何接受者? : - )
答案 0 :(得分:1)
angular会将您的请求作为JSON传递到正文中:
{
"date": "2013-06-03",
"notes": "My notes"
}
所以最合适的是创建一个表示这些值的对象:
public class MyObject
{
public DateTime Date { get; set; }
public string Notes { get; set; }
}
然后调整方法签名
public HttpResponseMessage Put(MyObject obj)
Web API将反序列化消息的内容(正文中的JSON)并创建MyObject
的实例。当这些参数是URL的一部分时,具有简单类型的签名将非常有用。请阅读此阅读以获取更多详细信息http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection