【问题标题】:net core 3.1 ajax parameter is not being sent to the controllernet core 3.1 ajax 参数未发送到控制器
【发布时间】:2020-11-19 08:00:14
【问题描述】:

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

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}

【问题讨论】:

  • 试试data: data 而不是data: JSON.stringify(data)
  • @PriyankPanchal 刚试了一下,当它碰到控制器时模型为空
  • 我可以使用你的代码成功传递参数。你能分享你的整个剃须刀视图和你的 Startup.cs 吗?你自定义了任何模型绑定器吗?

标签: jquery ajax asp.net-core


【解决方案1】:

使用控制器方法,例如(即删除 [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);
            }
        });
    });

【讨论】:

  • 我已经尝试过了,但是没有用。我所有的 ajax 调用都不起作用!!
  • @Mikey 我修改了答案,请尝试那个。谢谢
  • 感谢代码 sn-p。我的值是页面中的隐藏输入,我看到您提交了整个表单,如何修改您的 sn-p 以使用隐藏元素值
  • 你可以使用类似 var data = { productId: $('#productId').val(), freezeReason: $('#freezeReason').val(), freezeAuthorizer: $(' #freezeAuthorizer').val() }; $.ajax({url: '@Url.Action("Freeze", "Test")', type: 'POST',cache: false, data: data, success: function(data) { alert('冻结成功' ); $('#tombstoneView').html(data); }, error: function (xhr, status, error) { alert('Error'); alert(xhr.responseText); } });
猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 2021-03-12
  • 2020-09-07
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多