首页 > 解决方案 > net core 3.1 ajax 参数未发送到控制器

问题描述

我正在尝试从我的 razor 文件向我的 net core 3.1 控制器发出 ajax 调用我在控制器方法的开头放置了一个断点我注意到调用是对控制器方法进行的,但是该参数始终为空

阿贾克斯调用:

$.ajax({
url: '@Url.Action("Freeze", "Admin")',
contentType: 'application/json; charset=utf-8',
type: 'POST',
cache: false,
data: JSON.stringify(data) ,
success: function (data) {
alert('Freeze successful');
$('#tombstoneView').html(data);
},
error: function (xhr, status, error) {
alert('Error');
alert(xhr.responseText);
}

控制器方法:

[HttpPost]
public IActionResult Freeze([FromBody]FreezeModel model)

冻结模型

public class FreezeModel
{
public int productId { get; set; }
public string[] refPeriods { get; set; } = null;
public string freezeReason { get; set; }
public string freezeAuthorizer { get; set; }
}

我使用了浏览器调试器,我在请求有效负载中看到了我的值 在此处输入图像描述

我试图输出 JSON.stringify(data) 并得到了这个 {"productId":"10100039","freezeReason":"ttt","freezeAuthorizer":"","re​​fPeriods":null}

标签: jqueryajaxasp.net-core

解决方案


使用控制器方法,例如(即删除 [FromBody])

[HttpPost]
public IActionResult Freeze(FreezeModel model)

ajax调用提交表单

$('#testform').on('submit', function (e) {
        e.preventDefault();
        var data = $('#testform').serialize();
        $.ajax({
            url: '@Url.Action("Freeze", "Test")',
            type: 'POST',
            cache: false,
            data: data,
            success: function (data) {
                alert('Freeze successful');
                $('#tombstoneView').html(data);
            },
            error: function (xhr, status, error) {
                alert('Error');
                alert(xhr.responseText);
            }
        });
    });

在此处输入图像描述


推荐阅读