我有一个Webapi控制器,如下所示。 虽然很粗糙。
public async Task<HttpResponseMessage> Put(string id, [FromBody]Students studentToupdate)
{
if (!ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.BadRequest, "Model state Not valid");
}
if (studentToupdate == null)
return new HttpResponseMessage(HttpStatusCode.BadRequest);
Students student = await Context.Set<Students>().FindAsync(new Guid(id));
student.FirstName = studentToupdate.FirstName;
student.LastName = studentToupdate.LastName;
student.Address = studentToupdate.Address;
student.DOB = studentToupdate.DOB;
student.Phone = studentToupdate.Phone;
Context.Entry(student).State = EntityState.Modified;
try
{
int result = await Context.SaveChangesAsync();
return result > 0 ? Request.CreateResponse<Students>(HttpStatusCode.OK, student) : Request.CreateResponse(HttpStatusCode.InternalServerError);
}
catch (Exception ex)
{
return Request.CreateResponse<Exception>(ex);
}
}
我的角度控制器是这样的。它在coffeescript中。
SiteAngular.Student.controller 'Edit',['$scope','$state','$stateParams','Factory',($scope,$state,$stateParams,factory)->
id=$stateParams.id
student = factory.get id:id
$scope.student=student
$scope.Update = (id,student)->
factory.update
id:id
studentToupdate:student
]
最后,至少我的html可能是一个列表,它的按钮有一个更新方法:
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="button" value="Save" class="btn btn-default" ng-click="Update(student.StudentGuid,student)"/>
</div>
</div>
在div上方我ng-repeat
为学生的各种属性循环到表格中。在更新方法中,我想将Guid
和student
对象发送到提到的webapi控制器
问题在于webapi控制器string id
完全接收了guid。但是,studentToUpdate的所有属性都为null。我完全检查了标题
Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 250
Content-Type application/json;charset=utf-8
Cookie __RequestVerificationToken=SBC0HZDwZOEyOfG0dMN0Da-MqFYQoVoiaG3_LIpnXc5a4tSsu1wP4U8Qy3cgrw7w_rMmDu5577pVrZ0Kmzo9YCZcLvFY93f37Heat160h6k1
Host localhost:3090
Referer http://localhost:3090/
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
有人可以告诉我为什么id
被填充而不是FromBody
学生对象。 webapi put方法中student对象的属性都是null?
使用webapi v5.1.0.0。有线索吗?
答案 0 :(得分:0)
我有答案。更新放置应该可能是
$scope.Update = (id,student)->
factory.update
id:id
student
]
参数键studentToupdate
不是必需的,它会在作为jquery json对象传递时自动解析。