如何使用ajax将模型从视图传递到控制器

时间:2018-06-13 07:28:31

标签: javascript asp.net ajax asp.net-mvc

在视图中,我收到了HistorySearch类型的模型。然后我想使用ajax

将此模型重新发送到控制器
$("#exportCsv").click(function () {
    // get model as json
    var searchData = '@Html.Raw(Json.Encode(@Model))';
    searchData = JSON.stringify({ 'search': searchData });

    $.ajax({
        //contentType: 'application/json; charset=utf-8',
        url: '@Url.Action("ExportToCsv", "BankCosts")',
        type: 'POST',  
        data: searchData,
        dataType: 'json',
        error: function (xhr) {
            alert('Error: ' + xhr.statusText);
        },
        async: true,
    });
});

正如您所看到的,我必须发表评论contentType,因为出于某种原因,此传递的模型在控制器中设置为null

另外,我的控制器编码如下:

[HttpPost]
public void ExportToCsv(HistorySearch search)
{
    // search properties are not filled. They are set to default value
}

绑定的东西不能正常工作。收到的search属性设置为默认值。那里有什么问题?

1 个答案:

答案 0 :(得分:0)

JSON.stringify({ 'search': searchData })会将您的对象转换为字符串,因此会将 ActionResult 传递给字符串而不是对象。 删除JSON.stringify和ajax调用更改:

$.ajax({url: '...', ..., data: { searchData }, ...