我使用此[模板](https://visualstudiogallery.msdn.microsoft.com/48d928e3-9b5c-4faf-b46f-d6baa7d9886c"当您将鼠标悬停在")时显示此项目。
这是一个简单的任务管理器,您可以在其中创建,完成和删除任务。
我完成了并运行并添加了一个额外的按钮,几乎完全复制了模板作者的代码。
我下面的代码是他的方法和我的方法的一个例子。
CODE
他完成任务的方式:
前端:
// called by ng-click="complete($index)"
$scope.complete = function(index)
{
$http.post('/api/WS_Todo/CompleteTodoItem/' + $scope.todoList[index].id)
.success(function (data, status, headers, config) {
$scope.getList();
});
}
后端:
[HttpPost]
[Authorize]
async public Task<HttpResponseMessage> CompleteTodoItem(int id)
{
var item = db.todos.Where(t => t.id == id).FirstOrDefault();
if (item != null)
{
item.completed = true;
await db.SaveChangesAsync();
}
return Request.CreateResponse(HttpStatusCode.Accepted);
}
我重新开启任务的方法:
前端:
// called by ng-click="reopen($index)"
$scope.reopen = function(index)
{
$http.post('/api/WS_Todo/ReopenTodoItem', +$scope.todoList[index].id)
.success(function (data, status, headers, config) {
$scope.getList();
});
}
后端:
[HttpPost]
[Authorize]
async public Task<HttpResponseMessage> ReopenTodoItem(int id)
{
var item = db.todos.Where(t => t.id == id).FirstOrDefault();
if (item != null)
{
item.completed = false;
await db.SaveChangesAsync();
}
return Request.CreateResponse(HttpStatusCode.Accepted);
}
问题
他的代码按预期工作。
我的代码告诉我:
POST http://localhost:33651/api/WS_Todo/ReopenTodoItem 404(未找到)angularjs:9734
当两种方法都在同一个前端和后端控制器中时,我无法看到路由应该是一个问题。
答案 0 :(得分:0)
如果我是你,我会在我的webApi方法上指定一个路由属性:
[Route("/api/WS_Todo/CompleteTodoItem/{id}")]
使用正确的语法从前面调用url。 与其他方法相同。
答案 1 :(得分:0)
经过几次尝试不同的方法..我被我的网址中的逗号&gt;打败了。&lt;