私はHTMLTextwriterを使用してExcelファイルを作成することができましたが、返されるファイルはJavascript関数になっています。ASP.net MVC Excelをダウンロード
ビューコードは:であるExcelファイル
$.ajax({
type: "GET",
url: "/Search/ExportToExcel",
data: { //parameters },
error: function (error) {
alert(error.responseText);
},
success: function (data) {
alert("success");
alert(data);
}
});
:
<input type="submit" id = "exportExcelBtn" class = "searchButton" value="Export To Excel"
onclick= "ExportToExcel();"/>
JS関数は、制御動作に必要なデータを取得し、その後のような関連するアクションを呼び出しますActionResultから派生して作成され、JSメソッドに返されます。作成されたExcelファイルは、次のようにブラウザに書き込まれます。
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = contentType;
context.Response.Write(content);
context.Response.End();
どうすればそのファイルをユーザーのコンピュータにダウンロードできますか?
私は簡単にモデルメソッドでFile.WriteAllTextを使用することができますが、私はMVCメソッドを浮気していると感じていますか?
リンクを持つリソースにリダイレクトする必要があります。なぜアクションにリンクしないのですか? – dknaack
@dknaack、あなたはアクションからビューへの直接のリンクですか? –
はい、どうしてですか。 ActionResultが応答するコンテンツタイプが優れている場合、ユーザーは現在のページにとどまり、ダウンロードダイアログが表示されます。 – dknaack