我写了一个接受我的模型的POST请求但是一旦我进入请求,List就返回null。
我已经在线阅读了多个解决方案,从添加[FormBody]到检查我的命名约定,但似乎没有任何工作正常。
在我的脚本中,我创建了一个数组var UserPermissions = new Array();
然后我将数组推送到多个对象:
var permission = {
UserId: @Model.UserId,
AppId: @Model.AppId,
PermissionId: this.value
}
UserPermissions.push(permission);
然后我执行我的Ajax请求:
$.ajax({
url: '@Url.Action("UpdateUserPermissions")',
data: JSON.stringify(UserPermissions),
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (status) {
swal("User Permissions have been updated.", { icon: "success" });
},
error: function (xhr, ajaxOptions, thrownError) {
swal("Error updating permissions, please contact support.");
}
});
我的控制器POST请求看起来像这样:
public IActionResult UpdateUserPermissions([FromBody]PermissionPartialModel model)
{
return View();
}
在每个[FromBody]PermissionPartialModel model
返回null
时,它应该返回一个列表。
这是我的模特:
public class PermissionPartialModel
{
public int AppId { get; set; }
public int UserId { get; set; }
public List<UserPermissionsModel> UserPermissions { get; set; }
}
导致这种情况的原因是什么,以及解决此问题的解决方案是什么?
答案 0 :(得分:0)
var UserPermissions= {
UserId: @Model.UserId,
AppId: @Model.AppId,
PermissionId: this.value
}
//UserPermissions.push(permission);
$.ajax({
url: '@Url.Action("UpdateUserPermissions")',
data: UserPermissions,
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (status) {
swal("User Permissions have been updated.", { icon: "success" });
},
error: function (xhr, ajaxOptions, thrownError) {
swal("Error updating permissions, please contact support.");
}
});
答案 1 :(得分:0)
您正在从视图发送数组但在控制器中接收对象。您需要将参数类型从对象更改为
public IActionResult UpdateUserPermissions([FromBody]List<PermissionPartialModel> model)
{
return View();
}
这将映射,但您将获得UserPermissions
null。要解决此问题,您需要在PermissionPartialModel
和permission
对象中进行更改。
权限
var permission = {
UserId: 2,
AppId: 2,
UserPermissions: { PermissionId: 2 }
}
UserPermissions.push(permission);
<强> PermissionPartialModel 强>
public class PermissionPartialModel
{
public int AppId { get; set; }
public int UserId { get; set; }
public UserPermissionsModel UserPermissions { get; set; }
}