Как передать модель из вида в контроллер с помощью ajax - PullRequest
0 голосов
/ 13 июня 2018

В связи с этим я получил модель типа 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 голосов
/ 13 июня 2018

JSON.stringify({ 'search': searchData }) преобразует ваш объект в строку, поэтому затем передаст вашему ActionResult строку вместо объекта.Удалите JSON.stringify и при изменении вызова ajax:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...