Я использую пример кода из этого блога https://www.mysharings.com/coderblog/how-to-use-crystal-reports-in-asp-net-mvc/
Все работает хорошо, я могу экспортировать свой старый отчет Crystal в PDF. Но это вызывает aspx из JavaScript. Я пытаюсь вызвать его из контроллера, он ничего не экспортирует, даже если отладка внутри aspx.cs, после запуска, хотя код не экспортирует PDF.
В конце оба примера кода будут вызывать objReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, true, fileName);
Поскольку они перенаправляют в один и тот же файл aspx и получают один и тот же DataTable из mssql, как получается, что прямой из javascript работает, но он не работает напрямую из контроллера? Есть идеи?
Я пытаюсь использовать перенаправление, service.execute
и response.redirect
, но все равно получаю ту же ошибку.
Интересно, так ли это, потому что мне нужно было добавить атрибут на reportframe
из контроллера, чтобы я использовал
var myDiv = new HtmlGenericControl("ReportFrame");
myDiv.Attributes.Add("src", path);
но все равно не работает.
=========== код вызова из Javascript =============================== ========
<input id="report" type="submit" class="btn btn-primary" value="Report"
onclick="PrintReport('pdf'); />
<iframe id="ReportFrame" src="" width="100%" height="1000" style="display:none"></iframe>
function PrintReport(printType) {
if (printType == 'inline') {
//you can add the loading.....
}
//var params = "param1=;param2=";//create the parameters for report
var params = '';
//load the report by iframe
$("#ReportFrame").attr("src", "@Url.Content("~/Report/ReportViewer.aspx?
Params=")" + params + "&ReportName=PrintConsumerInfoBS&SaveName=Testing
Report&ReportType=" + printType + "&ReportPath=WebListReports");
$('#ReportFrame').load(function () {
//and stop the loading after load
});
}
=========================== Код вызова с контроллера ================ ===========
<input id="report" type="submit" class="btn btn-primary" value="Report"
/>
<iframe id="ReportFrame" src="" width="100%" height="1000" style="display:none"></iframe>
$('#report').click(function () {
var url = '/Consumer/ExportConsumer';
var formName = '#Consumerform';
Global.postData(formName, url)
})
и C #
public ActionResult ExportConsumer(ConsumerJson jsn)
{
//var Consumer = ConsumerAction.Report(jsn.c_uci);
var EmptyPara = "";
var reportType = "PDF";
var reportFolder = "WebListReports";
var reportName = "PrintConsumerInfoBS";
var path = "~/Report/ReportViewer.aspx?Params=" + EmptyPara.Trim()
+ "&ReportName=" + reportName.Trim()
+ "&SaveName="+ reportName.Trim()
+ "&ReportType=" + reportType.Trim()
+ "&ReportPath="+ reportFolder.Trim();
//var myDiv = new HtmlGenericControl("ReportFrame");
//myDiv.Attributes.Add("src", path);
Response.Redirect(path);
return ReturnConsumerProfile();
}
Ничего не загружать или экспортировать вызов с контроллера