c# - 在 MVC Controller 中使用多个参数时,Ajax 表单序列化不绑定(bind)

标签 c# jquery ajax asp.net-mvc model

我的模型有多个输入的 View (Html.TextBoxFor(x => x.attribute) 等。我的 ajax 方法是:

function callMethod() {
    $.ajax({
        type: "POST",
        data: $('#Form').serialize() ,
        url: '@Url.Action("formMethod", "Test")',
    }).done(function (newTable) {
        $('#RefundTableDiv').html(newTable);
    });
};

这完美地工作,模型完美地适用于formMethod,但是当我更改formMethod并添加另一个参数(例如'int test')时,它不再起作用了。

我的方法看起来像:
function callMethod() {
 var number = 2;
    $.ajax({
        type: "POST",
        data: {"model": $('#Form').serialize(),
               "test": number}, 
        url: '@Url.Action("formMethod", "Test")',
    }).done(function (newTable) {
        $('#RefundTableDiv').html(newTable);
    });
};

“测试”: Controller 中的方法确实正确输入了数字,但模型现在突然为空?

我究竟做错了什么?

最佳答案

使用 .serialize()将您的模型序列化为查询字符串(例如 someProperty=someValue&anotherProperty=anotherValue&... )。要添加其他名称/值对,您可以手动追加,例如

var data = $('#Form').serialize() + '&test=' + number;
$.ajax({
    ....
    data: data;

或使用 param()方法(如果您要添加多个项目和/或数组,则很有用)
 var data = $("#Form").serialize() + '&' + $.param({ test: number }, true);
 $.ajax({
    ....
    data: data;

关于c# - 在 MVC Controller 中使用多个参数时,Ajax 表单序列化不绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525744/

相关文章:

javascript - 表单提交后AJAX onchange行为发生变化

c# - ASP.NET CORE 中的 CORS 策略阻止了对 XMLHttpRequest 的访问

c# - UWP 应用程序中的 Async Task.Delay 开销,有更好的解决方案吗?

c# - WebRequest.GetResponse 锁定?

jquery - jQuery addClass SyntaxError:意外 token 非法

javascript - 可能的最高 z-index 是多少?

c# - 通过for循环迭代文本框

c# - 如何在一个脚本中使用池列表中的两个对象?

jquery 空函数和事件处理程序

jquery读取嵌套的json