【发布时间】:2015-05-21 00:13:34
【问题描述】:
我为 Put 和 Get 方法定义了这样的角度控制器。我是角度 JS 的新手。 get 方法按预期工作,但未调用 Put 方法。我遵循了其中一个教程并实施了。尽管在教程中,他们使用的是 REST 服务 URL 而不是控制器方法。我在这里使用 MVC 控制器而不是 webAPI 控制器。
public JsonResult GetEmployee(int id)
{
Employee empDetail = emp.GetEmployees().FirstOrDefault(i => i.EmpID == id);
return Json(empDetail, JsonRequestBehavior.AllowGet);
}
public JsonResult PutEmployee(int id, Employee updtEmp)
{
updtEmp.EmpID=id;
int index = emp.GetEmployees().FindIndex(i => i.EmpID == updtEmp.EmpID);
emp.GetEmployees().RemoveAt(index);
emp.GetEmployees().Add(updtEmp);
return Json(emp.GetEmployees(), JsonRequestBehavior.AllowGet);
}
这是我的角度工厂和控制器方法
myservice.factory('empFactory', function ($resource) {
return $resource('../../Employee/GetEmployee/:EmpID', { EmpID: '@EmpID' },
{
show: { method: 'GET' },
update: { method: 'PUT', params: { Employee: '@employee' } }
});
});
myApp.controller('empDetailController', function ($scope, empFactory, $routeParams) {
$scope.Employee = empFactory.show({ EmpID: $routeParams.EmpID });
$scope.UpdateEmp = function () {
// alert($scope.Employee.FirstName);
var employee=$scope.Employee;
empFactory.update({ EmpID: $routeParams.EmpID, Employee: employee })
};
});
【问题讨论】:
-
嗨,Jasen,我已启用 Put.. 请参考我在以下部分中的评论
-
您需要使用适当的动词
[HttpPut]来装饰您的控制器,因为 MVC 控制器不会像 WebAPI 那样将动作名称映射到动词。这意味着您需要使用具有不同 URL 的两个请求来设置您的 Angular 服务,而不是尝试重载单个请求。
标签: asp.net-mvc angularjs angularjs-resource