Retornar arquivo para salvar do método MVC do HttpPost Asp.Net

Eu tenho um projeto Asp.Net MVC e, em uma página, o usuário pode editar os dados carregados na tabela (alterar imagens, seqüências de caracteres, ordem dos itens, etc ...).

Após todas as edições, o cliente pressiona o botão Download e salva o arquivo xml resultante em seu disco rígido para as próximas manipulações no futuro.

Então, eu tenho um formulário html simples:

 <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>

Os dados deste formulário são enviados através da chamada de função angularJs, que se parece com:

$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);
        });
};

Depois que essa função é chamada, a solicitação de postagem http preparada é enviada para o asp.net mvcBaixar açao:

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

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

Desejo que meu método Download retorne FileResult, para que uma caixa de diálogo para salvar arquivos apareça no cliente. Mas nada está acontecendo.

Eu tentei construir vários cabeçalhos de resposta, retornar MimeTypes diferentes, alterar os tipos de retorno do método Download e até tentei chamar o método [HttpGet] a partir do método Download, mas ainda assim nada aparece no cliente.

Pesquisado no monitoramento de rede do navegador - há apenas uma solicitação POST enviada.

É possível enviar dados do método HttpPost para o cliente, que foram chamados da função angularJs dessa maneira? O que estou perdendo e por que a caixa de diálogo de salvamento não é mostrada no navegador?

Ou alguém pode sugerir outras soluções mais adequadas para conseguir isso?

questionAnswers(1)

yourAnswerToTheQuestion