我已阅读有关消息的各种帖子
请求的资源不支持http方法' POST'
我确定已添加Http
属性。我尝试了System.Web.HttpPost
和System.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方法并继续得到上面提到的相同错误
任何帮助非常感谢
答案 0 :(得分:3)
您的方法私有。 让它公开,它应该会更好。
作为旁注,您可能需要重新考虑使用async as。
首选异步空方法
上的异步任务方法
答案 1 :(得分:1)
@David好像这里有一个混乱,因为您使用了/api/
这是 web api 的默认路由,但您已经提到过您正在使用 mvc 。
如果您的控制器继承自ApiController
,则为web api。在这种情况下,System.Web.Http.Post
属性会有所不同
虽然你必须公开这个方法,但无论如何都要像@smoksnes所说的那样使它工作。