2017-07-18 3 views
1

現在MVCプロジェクトを行っています。私はExcel形式でレポートを生成するボタンを持っています。ExcelファイルPOST経由でC#をダウンロードする(404.15クエリ文字列エラーを避けるため)

私は、他の多くのユーザーから聞いた以前の質問のカップルを通過しました。

クエリの長​​さを避けるために、POST経由でクエリ文字列を渡す方法はありますか?

これは、データベースのエラーログに表示されます。

NO USER 404.15見つかりません「/ GD15 /バッチ/ PaymentReport? に、checkIDs = 67284% 7C66283%7C66288% ..................

私は、Excelファイルを生成するためのJavaScriptを介してコントローラにどこ200 checkId年代の周りに渡す。 任意の助けを理解されたい。

#Javascriptファイルのコードスニペット。(ノックアウトを用いて)

 self.onClickDownload = function() { 
     if (!self.actionsEnabled()){ 
    return; 
} 

var selectedRows = self.paymentGrid.selectedRows(); 
var checkIds = []; 
for (var i = 0; i < selectedRows.length; i++) { 
    checkIds[i] = selectedRows[i].Id; 
} 

self.isDownloading(true); 

$.fileDownload(gControllerName + "/PaymentReport", { 
    data: { checkIds: checkIds.join("|") }, 
    successCallback: self.onDownloadComplete, 
    failCallback: self.onDownloadFailed 
}); 

}

コントローラ(コードスニペット)

public ActionResult PaymentReport(string checkIds) 
    { 
    Report report = new Report 
    { 
    ReportDataProvider = 
    "BKO.App.Reporting.ReportDataProviders.PaymentDataProvider", 
    ReportFileFullName = "Payment.rdlc" 
    }; 
    string mimeType; 
    byte[] excelData = ReportGenerator.GetReportData(ReportFormatEnum.EXCEL, 
    report, "CheckNumberList=" + checkIds, out mimeType); 
    Response.AppendCookie(new System.Web.HttpCookie("fileDownload", "true")); 
    return File(excelData,"application/vnd.ms-excel","PaymentReport_"+".xls"); 
} 
+1

投稿を使用する場合は、リクエストの本文にデータを入れる方が簡単かもしれません。 – Stefan

+0

@Stefan:上記のJSに関してはどうすればいいですか?私はここで何か間違っているのか分かりません。 POSTを使用するにはフォームタグが必要ですか? – rockingmeister

答えて

1

変更:

$.fileDownload(gControllerName + "/PaymentReport", { 
    data: { checkIds: checkIds.join("|") }, 

に:

$.fileDownload(gControllerName + "/PaymentReport", { 
    httpMethod: 'POST', 
    data: { checkIds: checkIds.join("|") }, 

データがPOSTなくGETを介して送信されることを保証します。

+0

[HttpGet]属性を '[HttpPost]'に変更するのを忘れないでください。 –

+0

@JohnPavek:アップデートのおかげでコントローラに[HttpPost]が追加されました – rockingmeister

+0

mjwills:ソリューションはa魅力、ありがとう:) – rockingmeister

関連する問題