【问题标题】:JSON object not passing as param to webApi PUT methodJSON 对象未作为参数传递给 webApi PUT 方法
【发布时间】: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


    【解决方案1】:

    假设您可以正常接听电话, 您想将对象附加到正文中

         $http.put("/api/attendance/PutAttendRecord/", stuInfo)
        .then(function (d) {
            alert(d.data.dc_number);
        });
    

    我认为您不需要 [FromBody],因为我相信只有在函数发现不清楚时才指定它。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多