Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET WebForms中的异步操作_C#_Asp.net_Pdf_Iframe_Webforms - Fatal编程技术网

C# ASP.NET WebForms中的异步操作

C# ASP.NET WebForms中的异步操作,c#,asp.net,pdf,iframe,webforms,C#,Asp.net,Pdf,Iframe,Webforms,以.NET 4为目标的ASP.NET Webforms。 我需要在页面上显示pdf文档(在iframe中),加载pdf需要花费大量时间,因此我们的想法是异步加载pdf文档,并在iframe中显示等待的消息,一旦pdf就绪,在iframe中显示pdf // PrintPDFView.aspx <div id="pdfDiv" style="height: 100%;"> // show pdf if ready otherwise waiting message <

以.NET 4为目标的ASP.NET Webforms。 我需要在页面上显示pdf文档(在iframe中),加载pdf需要花费大量时间,因此我们的想法是异步加载pdf文档,并在iframe中显示等待的消息,一旦pdf就绪,在iframe中显示pdf

// PrintPDFView.aspx
<div id="pdfDiv" style="height: 100%;">
    // show pdf if ready otherwise waiting message
    <iframe runat="server" width="100%" height="100%" id="PDFViewDoc" />
</div>

// PrintPDFView.aspx.cs
protected override void OnPreRender(EventArgs e)
{
                //...
                // Long running process
                CallDocumentsService();
                //...
                PDFViewDoc.Attributes["src"] = "ShowPDFView.aspx";
}

// ShowPDFView.aspx
// When the pdf is ready, it will be rendered on this page
<body>
    <div id="LoadingPdf">
        <h1>Loading your document!</h1>    
        <p>This may take a few minutes...</p>
    </div>
</body>

// ShowPDFView.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
    // ...
    Response.BinaryWrite(pdfToDisplay);
    //...
}
//PrintPDFView.aspx
//如果准备就绪,则显示pdf,否则等待消息
//PrintPDFView.aspx.cs
受保护的覆盖无效OnPreRender(EventArgs e)
{
//...
//长时间运行过程
CallDocumentsService();
//...
PDFViewDoc.Attributes[“src”]=“ShowPDFView.aspx”;
}
//ShowPDFView.aspx
//pdf准备就绪后,将在此页面上呈现
正在加载您的文档!
这可能需要几分钟

//ShowPDFView.aspx.cs 受保护的无效页面加载(对象发送方、事件参数e) { // ... 二进制写入(pdfToDisplay); //... }
这是一种你可能会使用JavaScript而不是服务器端技术的东西。你的想法在这里是错误的。异步不是魔术。在发送响应后,您不能等待服务器上发生任何事情。请始终记住这一点->
请求将进入。服务器处理它,生成响应,向客户端发送响应,服务器参与结束
。为了完成您的目标,使用客户端上运行的JavaScript加载PDF。我正在处理一个复杂的遗留项目,加载PDF的代码在服务器端实现,在该级别进行更改并不容易,并且会破坏其他功能。很好,您可以在服务器端完成所有PDF服务工作,您只需要一点JavaScript来检测IFRAME中的状态变化。那么?这并没有改变框架运行方式的限制。可能最简单的方法是在客户端上显示一个不确定的进度条,并通过AJAX或iframe加载PDF。下载后,显示并隐藏进度条。