我是MVC中的新鸟。我想将Model传递给Ajax调用,我编写以下代码来执行此操作。但它总是将NULL传递给所有属性。
$("#btnsubmit").click(function () {
alert('hello');
var productModel = {
Name: 'ram@mailinator.com',
Address: "Chai"
};
$.ajax({
type: "POST",
url: '@Url.Action("ContactDistributor", "AjaxCallTest")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ model: productModel }),
dataType: "json",
success: function () { alert('Success'); },
error: function (xhr) {
alert(xhr.error);
}
});
return false;
});
模特:
public class AjaxCalltestModal
{
public int Id { get; set; }
public String Name { get; set; }
public String Address { get; set; }
}
控制器:
[HttpPost]
public ActionResult ContactDistributor(WebApplication1.Models.AjaxCalltestModal a)
{
return Json("test");
}
请帮帮我。
答案 0 :(得分:5)
我已使用以下代码解决了该问题:
$("#btnsubmit").click(function () {
alert('hello');
var productModel = {
Name: 'ram@mailinator.com',
Address: "Chai"
};
$.ajax({
type: "POST",
url: '@Url.Action("ContactDistributor", "AjaxCallTest")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ 'model': productModel }),
dataType: "json",
success: function () { alert('Success'); },
error: function (xhr) {
alert(xhr.error);
}
});
return false;
});
感谢您的努力和评论..
答案 1 :(得分:1)
JSON.stringify({ model: productModel })
应该是
JSON.stringify(productModel)
答案 2 :(得分:1)
最有可能将数据设置为Javascript对象,而不是将其设置为Stringify。因为据我所知,查询ajax方法已经为你做了这个
data: productModel
答案 3 :(得分:0)
旧问题,但这可能会在将来对某人有所帮助。如果模型中有一个称为“模型”的属性,则MVC解析器似乎无法正确处理它,并且它也将返回null。
只需将其重命名为其他任何名称,它便可以正常工作。