【发布时间】:2018-12-27 22:41:58
【问题描述】:
我正在使用 Angularjs 和带有 webApi2 的 asp.net mvc 5。
我在调用自定义 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 类的情况下使用 Newtonsoft,并将参数作为 jObject 传递,但我仍然在 iHttpActionResult 方法中得到空值异常。数据只是没有进入我的方法。路由问题?
如果我在 iHttpActionResult 中的这些变量中手动放置值,则该方法可以正常工作。
【问题讨论】:
标签: angularjs json asp.net-mvc-5 asp.net-web-api2