我有一段时间陷入这种困惑,这是由于以下原因:
我正在尝试发送 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}
});
我在 Controller 中接收我的对象,如下所示:
public ActionResult MyAction(ObjectType myObjectName)
但是,当从 javascript 接收对象时,它不会识别它本身,而只是实例化一个新的 ObjectType。
我知道我可以将它作为字符串发送,如果我将对象放入表单中则将其序列化,等等...我想知道为什么这种方法有时似乎对我有用(我已经让它工作了与其他 ObjectType(s)),而在其他情况下则不然。它与对象的复杂程度有关系吗?发送不完整的对象? (后一个似乎不是,因为我发送了“不完整”对象,并且空字段只是用 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; }
}
您当前的代码正在尝试将您的模型绑定(bind)到类似于的内容
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; }
}
关于javascript - 如何将 AJAX/Jquery 对象发送到 Controller (差异)MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412222/