如何将AJAX/Jquery对象发送到Controller(差异)MVC4

How to send AJAX/Jquery object to Controller (discrepancy) MVC4

本文关键字:Controller 差异 MVC4 AJAX 对象 Jquery      更新时间:2023-09-26

我已经有一段时间感到困惑了,原因如下:

我正在尝试发送一个jquery对象

var myObject = {
                    Title: $('#Title').val(),
                    Title2: $('#Title2').val(),
                    Title3: $('#Title3').val(),
                };

通过ajax调用

                    $.ajax({
                    data: { myObjectName = myObject
                    },
                    datatype: "json",
                    url: "myUrl",
                    cache: false,
                    error: function (ts)
                    {//handle error},
                    success: function (result)
                    {//handle success}
                });

我在控制器中收到我的对象,如下所示:

public ActionResult MyAction(ObjectType myObjectName)

然而,当从javascript接收对象时,它不会将其识别为这样的对象,而只是实例化一个新的ObjectType。

我知道我可以将其作为字符串发送,如果我将对象放入表单中,则可以对其进行序列化,等等……我想知道的是,为什么这种方法有时似乎对我有效(我已经让它与其他ObjectType一起使用),而在其他情况下却无效。这与物体的复杂程度有关吗?发送不完整的对象?(后一个似乎不是这样,因为我发送了"不完整"的对象,而空字段只是用null实例化)

任何见解都将不胜感激。谢谢

将代码更改为;

$.ajax({
    data: myObject,
    datatype: "application/json",
    type: "POST",
    url: "myUrl",
    cache: false,
    error: function (ts)
    {//handle error},
    success: function (result)
    {//handle success}
});

请注意,该类型是POST,这意味着您还需要将[HttpPost]添加到ActioResult中。

只要ObjectType是具有字段的类

public class ObjectType
{
    public string Title { get; set; }
    public string Title2 { get; set; }
    public string Title3 { get; set; }
}

您当前的代码正试图将您的模型绑定到类似的东西上

public class SomeObject
{
    ObjectType myObjectName { get; set; }
}
public class ObjectType{
    public string Title { get; set; }
    public string Title2 { get; set; }
    public string Title3 { get; set; }
}