JSON 对象没有作为参数传递给 webApi PUT 方法
JSON object not passing as param to webApi PUT method
我正在使用 Angularjs 和 asp.net mvc 5 与 webApi2。
我在调用自定义 PUT 方法时遇到了一些问题。这几天研究了一下,虽然感觉还不错,但是我的JSON对象因为某些原因无法作为参数传递。
路线模板:
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
Web api 控制器和模型(为简洁起见缩短):
public class AttModel
{
public string dc { get; set; }
public string dt { get; set; }
}
[HttpPut]
public IHttpActionResult PutAttendRecord([FromBody]AttModel model)
{
string dc = model.dc;
DateTime dt = Convert.ToDateTime(model.dt);
var record = (from tbl in db.attend_am_y1
where tbl.dc_number == dc && tbl.class_date_am == dt
select tbl).SingleOrDefault();
record.status_am = "z";
db.SaveChanges();
}
Javascript 对象(angularjs PUT):
$scope.updateRecord = function () {
var stuInfo = {
dc: $scope.student.dc,
dt: $scope.student.dt
};
$http.put("/api/attendance/PutAttendRecord/" + stuInfo)
.then(function (d) {
alert(d.data.dc_number);
});
}
我尝试在没有额外 AttModel class 的情况下使用 Newtonsoft,并将参数作为 jObject 传递,但我仍然在 iHttpActionResult 方法中遇到空值异常。数据只是没有进入我的方法。路由问题?
如果我在 iHttpActionResult 的这些变量中手动放置值,该方法工作正常。
假设您可以正常接听电话,
你想在正文中附加你的对象
$http.put("/api/attendance/PutAttendRecord/", stuInfo)
.then(function (d) {
alert(d.data.dc_number);
});
而且我认为您不需要 [FromBody],因为我相信只有在函数发现它不清楚时才指定它。
我正在使用 Angularjs 和 asp.net mvc 5 与 webApi2。
我在调用自定义 PUT 方法时遇到了一些问题。这几天研究了一下,虽然感觉还不错,但是我的JSON对象因为某些原因无法作为参数传递。
路线模板:
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
Web api 控制器和模型(为简洁起见缩短):
public class AttModel
{
public string dc { get; set; }
public string dt { get; set; }
}
[HttpPut]
public IHttpActionResult PutAttendRecord([FromBody]AttModel model)
{
string dc = model.dc;
DateTime dt = Convert.ToDateTime(model.dt);
var record = (from tbl in db.attend_am_y1
where tbl.dc_number == dc && tbl.class_date_am == dt
select tbl).SingleOrDefault();
record.status_am = "z";
db.SaveChanges();
}
Javascript 对象(angularjs PUT):
$scope.updateRecord = function () {
var stuInfo = {
dc: $scope.student.dc,
dt: $scope.student.dt
};
$http.put("/api/attendance/PutAttendRecord/" + stuInfo)
.then(function (d) {
alert(d.data.dc_number);
});
}
我尝试在没有额外 AttModel class 的情况下使用 Newtonsoft,并将参数作为 jObject 传递,但我仍然在 iHttpActionResult 方法中遇到空值异常。数据只是没有进入我的方法。路由问题?
如果我在 iHttpActionResult 的这些变量中手动放置值,该方法工作正常。
假设您可以正常接听电话, 你想在正文中附加你的对象
$http.put("/api/attendance/PutAttendRecord/", stuInfo)
.then(function (d) {
alert(d.data.dc_number);
});
而且我认为您不需要 [FromBody],因为我相信只有在函数发现它不清楚时才指定它。