ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作相关的知识,希望对你有一定的参考价值。

为什么在这种情况下id在到达Action时为null?

使用javascript

$("#ajax-submit").click(function () {
    var data = { setup: $("form").serialize(), id: "12345" };
    $.ajax({
        type: 'POST',
        url: "/MyController/Process",
        data: JSON.stringify(data),
        success: function () { alert("Successful"); },
        dataType: "json"
    });
});

行动

[HttpPost]
public ActionResult Process(SetupModel setup, string id)
{
    // id is null, setup is not!
}

如果我将javascript更改为:

$.ajax({
    type: 'POST',
    url: "/MyController/Process",
    data: { setup: $("form").serialize(), id: "12345" },
    success: function () { alert("Successful"); },
    dataType: "json"
});

然后id绑定,但setup没有!

目标

我正在尝试开发一个逐步向导,其中整个模型在单个视图中呈现,并使用javascript显示/隐藏div以模拟前往下一页/上一页。

但是,我遇到的问题是,其中一个步骤需要建立一个列表(不提交整个模型)。为了实现这一点,我试图在那时提交数据(使用额外参数),更新控制器中的模型,然后使用更新的模型重新加载视图。

答案

代码中的细微变化。

$.ajax({
    type: 'POST',
    url: "/MyController/Process",
    data: $("form").serialize() + '&id=12345',
    success: function() {
        alert("Successful");
    },
    dataType: "json"
});

这将解决问题

另一答案

试试这样

$("#ajax-submit").click(function () {

    id= "12345"; //

    var data = { setup: $("form").serialize()};
    $.ajax({
        type: 'POST',
        url: "/MyController/Process/"+id,
        data: JSON.stringify(data),
        success: function () { alert("Successful"); },
        dataType: "json"
    });
});
另一答案

您不能将其添加为查询字符串的一部分,因为默认路由期望“id”成为url路径的一部分:

“{控制器} / {行动} /(编号)”

在$ .ajax调用中,url应为“/ MyController / Process /”+ id

以上是关于ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 3 - ajax 表单提交和验证

ASP.NET MVC 3 - Ajax.BeginForm 与 jQuery 表单插件

使用 AJAX 将 JavaScript 数组发布到 asp.net MVC 控制器

如何通过 ajax 使用数据库数据填充 ASP.NET MVC 4 下拉列表

C# ASP.net MVC Ajax MySQL DATATABLES 列搜索无法将搜索值传递给控制器

如何通过 jQuery ajax 更新 ASP.NET MVC ViewData?