проблема при использовании Crystal Report в MVC C # перенаправить aspx из контроллера - PullRequest
1 голос
/ 30 мая 2019

Я использую пример кода из этого блога 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();
}

Ничего не загружать или экспортировать вызов с контроллера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...