.Net Core MVC Post 参数绑定为空
.Net Core MVC Post parameter binding is null
我有一个负责 Group 实体的 MVC 控制器。
我的 [HttpPost]
方法处理新组的创建。在参数中,我尝试将请求绑定到一个简单的 GroupModel
DTO。
问题是参数总是“空”。我还将 .AddNewtonsoftJson();
添加到我的服务集合中。
组控制器
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create([FromBody] GroupModel group)
{
var (result, groupId) = await _groupService.Create(group.Name, group.Roles);
if (result.Succeeded)
{
return View("Index");
}
else
{
AddErrors(result);
return Create();
}
}
GroupModel
public class GroupModel
{
public string Name { get; set; }
public int[] Roles { get; set; }
}
JS
function create() {
var group = new Object();
group.name = getGroupName();
group.roles = getSelectedRoles();
/* Ajax request */
$.ajax({
url: BASE_URL + 'Group/Create',
type: 'POST',
data: JSON.stringify(group),
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("success");
},
error: function () {
alert("error");
}
});
}
我完全确定我遗漏了什么,我已经做过无数次了,但我就是想不通。
谢谢。
我想可能是group
的数据格式造成的。group.name = getGroupName(); group.roles = getSelectedRoles();
我给它添加了示例数据,它成功了。
这是一个有效的演示:
组控制器:
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create([FromBody] GroupModel group)
{
return View();
}
查看:
<button onclick="create()">Create</button>
@section scripts{
<script type="text/javascript">
function create() {
var group = new Object();
group.name = "a";
group.roles = new Array();
group.roles[0] = 1;
group.roles[1] = 2;
/* Ajax request */
$.ajax({
url: 'Create',
type: 'POST',
data: JSON.stringify(group),
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("success");
},
error: function () {
alert("error");
}
});
}
</script>
}
结果:
我有一个负责 Group 实体的 MVC 控制器。
我的 [HttpPost]
方法处理新组的创建。在参数中,我尝试将请求绑定到一个简单的 GroupModel
DTO。
问题是参数总是“空”。我还将 .AddNewtonsoftJson();
添加到我的服务集合中。
组控制器
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create([FromBody] GroupModel group)
{
var (result, groupId) = await _groupService.Create(group.Name, group.Roles);
if (result.Succeeded)
{
return View("Index");
}
else
{
AddErrors(result);
return Create();
}
}
GroupModel
public class GroupModel
{
public string Name { get; set; }
public int[] Roles { get; set; }
}
JS
function create() {
var group = new Object();
group.name = getGroupName();
group.roles = getSelectedRoles();
/* Ajax request */
$.ajax({
url: BASE_URL + 'Group/Create',
type: 'POST',
data: JSON.stringify(group),
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("success");
},
error: function () {
alert("error");
}
});
}
我完全确定我遗漏了什么,我已经做过无数次了,但我就是想不通。
谢谢。
我想可能是group
的数据格式造成的。group.name = getGroupName(); group.roles = getSelectedRoles();
我给它添加了示例数据,它成功了。
这是一个有效的演示:
组控制器:
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create([FromBody] GroupModel group)
{
return View();
}
查看:
<button onclick="create()">Create</button>
@section scripts{
<script type="text/javascript">
function create() {
var group = new Object();
group.name = "a";
group.roles = new Array();
group.roles[0] = 1;
group.roles[1] = 2;
/* Ajax request */
$.ajax({
url: 'Create',
type: 'POST',
data: JSON.stringify(group),
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("success");
},
error: function () {
alert("error");
}
});
}
</script>
}
结果: