Возвращаемый файл для сохранения из метода HttpPost Asp.Net MVC

У меня есть проект Asp.Net MVC, и на одной его странице пользователь может редактировать загруженные данные в таблицу (изменять изображения, строки, порядок элементов и т. Д.).

После того, как все изменения внесены, клиент нажимает кнопку «Загрузить» и сохраняет полученный xml-файл на своем жестком диске для последующих манипуляций в будущем.

Итак, у меня есть простая форма HTML:

 <form name="mainForm" data-ng-submit="sendForm()" ng-controller="ImportController" novalidate enctype="multipart/form-data">

    <!-- table structure definition removed for briefing -->

    <td>
        {{data.Items[$index].Id}}
    </td>
    <td>
        <img class="center-cropped" ng-src="data:image/jpg;base64, {{data.Items[$index].Image}}">
    </td>
    <td>
        <input class="form-control" type="text" value="{{data.Items[$index].LastName}}" />
    </td>

    <td>
        <input class="form-control" type="text" value="{{data.Items[$index].FirstName}}" />
    </td>
    <td>
        <input class="form-control" type="text" value="{{data.ClaimItems[$index].MiddleName}}" />
    </td>
    <input class="btn-success" id="submit-btn" type="submit" data-ng-disabled="mainForm.$invalid" value="Download" />

</form>

Эти данные формы отправляются через вызов функции angularJs, который выглядит следующим образом:

$scope.sendForm = function () {

    // some preparations to send image data through json
    for (var i = 0; i < $scope.data.Items.length; i++) {
        $scope.data.Items[i].ImageAsString = $scope.data.Items[i].Image;
    }

    $http.post("Download", { array: $scope.data })
        .success(function (responseData) {
            console.log(responseData);
        })
        .error(function (responseData) {
            console.log("Error !" + responseData);
        });
};

После вызова этой функции подготовленный http-запрос отправляется на asp.net mvcСкачать действие:

    [HttpPost]
    public FileResult Download(ItemsArrayWrapper array)
    {
       // here goes incoming data processing logic
       // ...

       return File(array.ConvertToItemsArray().Serialize(), "text/xml", name);
    }

Я хочу, чтобы мой метод Download возвращал FileResult, чтобы на клиенте отображался диалог сохранения файла. Но ничего не происходит.

Я пытался создать различные заголовки Response, возвращать разные MimeTypes, изменять типы возвращаемых данных метода Download и даже пытался вызвать метод [HttpGet] из метода Download, но на клиенте все еще ничего не появлялось.

Искал в браузере мониторинг сети - отправляется только один POST-запрос.

Можно ли отправить данные из метода HttpPost клиенту, который был вызван из функции angularJs таким образом? Чего мне не хватает, и почему диалоговое окно сохранения не отображается в браузере?

Или кто-нибудь может предложить другие более подходящие решения для достижения этой цели?

Ответы на вопрос(1)

Ваш ответ на вопрос