MVC - 请求的资源不支持http方法' POST'

时间:2016-07-18 11:39:53

标签: angularjs asp.net-mvc http-post

我已阅读有关消息的各种帖子

  

请求的资源不支持http方法' POST'

我确定已添加Http属性。我尝试了System.Web.HttpPostSystem.Web.Mvc.HttpPost

我还添加了[FromBody]代码

我有一个angularjs页面试图发布到MVC方法

这是我的angularjs电话

$http({
    url: '/api/entry',
    method: 'POST',
    headers: {
        'Content-Type': 'application/json', /*or whatever type is relevant */
        'Accept': 'application/json' /* ditto */
    },
    data: {
        'data': $scope.userEntry
    }
}).success(function (data, status, headers, config) {
    $scope.Message = "Saved successfully";
    $scope.working = false;
}).error(function (data, status, headers, config) {
    $scope.title = "Oops... something went wrong";
    $scope.working = false;
});

这是我的MVC方法

[System.Web.Mvc.HttpPost]
private async void Post([FromBody] UserEntry userEntry)
{   
    if (userEntry.UserEntryID > 0)
    {
        // update
        var dbUserEntry = this.db.UserEntries
                .Where(u => u.UserEntryID == userEntry.UserEntryID)
                .FirstOrDefault();

        dbUserEntry.TeamName = userEntry.TeamName;            
    }
    else { 
        // insert
        this.db.UserEntries.Add(userEntry);
    }

    await this.db.SaveChangesAsync();
}

无论我尝试什么都无法访问我的Post方法并继续得到上面提到的相同错误

任何帮助非常感谢

2 个答案:

答案 0 :(得分:3)

您的方法私有。 让它公开,它应该会更好。

作为旁注,您可能需要重新考虑使用async as。

  

首选异步空方法

上的异步任务方法

https://msdn.microsoft.com/en-us/magazine/jj991977.aspx

答案 1 :(得分:1)

@David好像这里有一个混乱,因为您使用了/api/这是 web api 的默认路由,但您已经提到过您正在使用 mvc
如果您的控制器继承自ApiController,则为web api。在这种情况下,System.Web.Http.Post属性会有所不同 虽然你必须公开这个方法,但无论如何都要像@smoksnes所说的那样使它工作。