ASP.NET MVC 在 jquery serialize() 上向 WebApi Controller 提交空字符串



我正在尝试通过 j Query $.post() 将数据从 MVC 视图 ASP.NET 发布到 WebApi 控制器,但我总是只收到空字符串(有趣的是 - 这适用于 Web 窗体)。这是JS。

$("#searchbtn").click(function () {
    var ser = $("div#hotels").serialize();
    $.post('/api/hotelsavailablerq', { '': ser });
});

以下是 ApiController 签名的外观:

[HttpPost]
public void PostHotelsAvailableRq([FromBody] string q)

仅使用纯 HTML 表单查看 -div、select、输入类型=文本。没有任何东西从模型绑定。

尝试另一个:

$.ajax({
    url: '/api/hotelsavailablerq',
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    dataType: 'json'
    data: JSON.stringify(ser)
});

请尝试以下代码来点击控制器。确保 api 控制器中有 hotelsavailablerq 操作方法。

$("#searchbtn").click(function () {
   $.ajax({
        url: '/api/hotelsavailablerq',
        type: 'POST',
        data: $('div#hotels').serialize(),
        success: function (result) {
});});

好吧,我找到了答案 - RTFM。当我仔细阅读jQuery有关serizlization的文档时,我发现:
1. <form>标签应该存在.
2. 每个控件应具有name属性.
所有这些东西默认情况下都是 Web 表单,但在 MVC 中,我应该手动添加它。

尝试

 $.post('/api/hotelsavailablerq', { 'q': ser });

string q 应该与您从 jQuery 发送的类型相同。