2013-01-06 18 views
5

次のコードでJSONオブジェクトを送信しています。CSV形式で値を返すコントローラで、CSVファイルとして開くか保存するかを提供する必要があります。正確にどのようなコードが成功に書くべきであることを理解することができませんでしI:機能(結果).ajax投稿でFileStreamの戻り値の型を処理する方法は?

リンクエクスポート

Html.ActionLink("Export", "", "", null, new { @onclick = "return exportData();"}) 

function exportData() { 

var searchViewModel = getExLogSearchModelData(); 
var path = getAbsolutePath("ExclusionLog", "ExportData"); 
$.ajax({ 
    url: path, 
    cache: false, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'html', 
    type: 'POST', 
    data: JSON.stringify(searchViewModel), 
    success: function (result) { 
    }, 
    error: function (error) { 
     $("#voidcontainer").html("Error"); 
    } 
}); 

}

コントローラーのActionResult

public ActionResult ExportData(ExclusionLogSearchViewModel postSearchViewModel) 
    { 
     try 
     { 
      IEnumerable<ExclusionLogViewModel> exclusionLogData = null; 
      exclusionLogcData = this._workerService.GetExclusionLogData(postSearchViewModel); 

      return CSVFile(exclusionLogMembershipSyncData.GetStream<ExclusionLogViewModel>(), "ExclusionLogTables.Csv"); 
     } 
     catch (Exception ex) 
     { 
       throw ex; 
     } 
     return null; 
    } 

のためのあなたしてくださいすることができますこれを行う方法を提案しますか?

答えて

3

私は同じ問題をヒットしていると私は$.ajaxを使用してファイルをダウンロードする方法を見つけることができませんでしたが、私は同様の動作を提供し、優れたJavaScriptライブラリを見つけました:

https://github.com/johnculviner/jquery.fileDownload

あなただけ起動する必要があります

$.fileDownload(path, { 
    httpMethod: 'POST', 
    data: JSON.stringify(searchViewModel), 
    success: function (result) { 
    }, 
    error: function (error) { 
     $("#voidcontainer").html("Error"); 
    } 
}); 

コントローラにCookieを作成することを忘れないでください。 src/Commonにはあなたのためにそれを行う適切なアクションフィルタがあります。

関連する問題