无法通过ajax post请求将视图(razor)中的数据发送到控制器

时间:2013-01-13 12:50:56

标签: jquery ajax asp.net-mvc razor

这是控制器

public ViewResult AddNewRow(ProjectBudgetModel model)
{
   //Some oprations goes here on the passed model the return to the same view 
   return View("AddNewProjectBudget", model);
}

这是一个像

这样的ajax调用的视图
$.ajax({
            url: '@Url.Action("AddNewRow", "ProjectBudget")',
            type: 'post',
            data: {model: '@Model'},
            contentType: 'application/json; charset=utf-8;',
            dataType: 'json',
            success: function (response) {
                alert(response.success)
                return;
            },
            error: function (x) {                
                alert(x.status);
            }
        });

在ajax调用的数据头中传递的@Model是ProjectBudgetModel

当我将数据传递给控制器​​时,这里出现了问题 它甚至没有达到控制器

中addNewRow函数的brekpoint

任何帮助?

2 个答案:

答案 0 :(得分:2)

data: {model: '@Model'},

完全不符合你的想法。查看生成的标记,看看这会发出一些破碎的值。

应该是这样的:

data: JSON.stringify(@Html.Raw(Json.Encode(Model))),

JSON.stringify方法本身内置于现代浏览器中。如果由于某些原因您需要支持石器时代的浏览器,您可以在页面中加入json2.js脚本来定义方法。

答案 1 :(得分:0)

我能够将视图中的数据发送到控制器上的模型的唯一方法是使用:

data: $("#FORM_ID").serialize(),

如果我使用:data:JSON.stringify(@Html.Raw(Json.Encode(Model))),,控制器会收到一个空模型。