質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

解決済

ASP.NET MVC5 でcsvをpostでダウンロードするには

AyanoTokuyama
AyanoTokuyama

総合スコア11

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

2回答

0評価

0クリップ

7748閲覧

投稿2019/01/27 23:49

編集2019/01/28 01:13

ASP.NET MVC5 でcsv出力をしようとしています。

パラメータの複数ある画面で、ボタンも複数あるためAjaxを使用してPostしています。
ファイルのダウンロードがされず、またファイル作成もできず困っています。

そもそも、Postでファイルダウンロードを検討していること自体に問題があるのでしょうか。
ご教示ください。

//以下、抜粋 $('#download').click( function () { var param= new Object(); //param set if (parking != null) { $.ajax({ type: "POST", url: "@Url.Action("CreateCsv", "Csv")", data: JSON.stringify(param), contentType: "application/json; charset=utf-8", datatype:'json', success: function () { debugger alert("success"); }, failure: function (data) { debugger alert(data.StatusMessage); }, error: function (data) { debugger alert(data.StatusMessage); } }) } } ); [HttpPost] public ActionResult CreateCsv(Param Pram) { if (Request.IsAjaxRequest()) { // DB からデータ取得 // CSV 内容生成 var fileName = string.Format("filename_{0}.csv", DateTime.Now.ToString("yyyyMMddHHmmss")); var data = Encoding.UTF8.GetBytes(csvString); var stream = new MemoryStream(data); var writer = new StreamWriter(stream); //var fileStreamResult = new FileStreamResult(stream, System.Net.Mime.MediaTypeNames .Text.Plain); //fileStreamResult.FileDownloadName = fileName; //return fileStreamResult; writer.Write(data); writer.Flush(); stream.Position = 0; return File(stream, "text/csv", fileName); } return null ; }

Action result を変えてみたり、return値をbyteにしてみたり、試行錯誤を行いましたがファイルの作成の痕跡もなく行き詰っています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww

2019/01/28 01:38

動かないコードを丸投げしないで、クライアント側 (JavaScript のコード) に問題があるのか、サーバー側に問題があるのか、Fiddler や Visual Studio のデバッガを使って切り分けてください。そして、サーバー側に問題があるなら、CSV を生成するコードに問題があるのか、ダウンロードするコードに問題があるのかを切り分けてください。
AyanoTokuyama

2019/01/28 02:21

まずは、考え方の根本的な誤りを確認しようと思い、質問させていただいております。 ちなみに、csv生成コードには問題はありませんでした。 (Getでダウンロードは可能。その後うまくいかないためいろいろ操作)
SurferOnWww

2019/01/28 03:46

> Getでダウンロードは可能 その jQuery ajax のコードで問題なくダウンロードしてファイルに保存できたと言ってますか?
AyanoTokuyama

2019/02/04 08:01

Getでのダウンロードは、c#側のコードで確認していましたので、そのままのコードではありません。 おっしゃられている通りの方法で解決しました。
SurferOnWww

2019/02/04 08:08

「c#側のコード」の意味不明ですが、少なくとも質問者さんが解答欄に書いたスクリプトは「私が言った通りの方法」ではないです。あと、JavaScript はブラウザ依存であることをお忘れなく。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。