【问题标题】:How do i call an aspx page from within another aspx page and not wait for it to complete?我如何从另一个 aspx 页面中调用一个 aspx 页面而不等待它完成?
【发布时间】:2018-06-14 22:50:17
【问题描述】:

我想调用一个从当前 aspx 页面创建 PDF 文件的 aspx 页面,但我不想等待其他页面完成。创建 PDF 需要很长时间,用户并不关心它是否正在创建。

我尝试了 Server.TransferRequest,这似乎有效,除了我正在处理的页面显示了我调用的页面中的“response.write”。我希望被调用的页面简单地运行,并且在调用它之后我不想知道它。

我怎样才能简单地执行另一个页面并“忘记它”。不幸的是,PDF 实用程序需要在实际的 aspx 页面上运行,并且不能在函数中调用。

Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    Response.write("This should show on the current page")

    Server.TransferRequest("/Invoicing/PDFGenerator.aspx")

    Response.write("This second line should show on the current page but does not")

End Sub

我查看了异步信息,但不清楚这是否是我必须在这里做的。

【问题讨论】:

  • Server.TransferRequest放在最后。它转移。我猜这对你不起作用,但为什么呢?
  • 我明白你的意思。转移的目的是实际转移到另一个页面。我正在尝试找到一种解决方法来实际传输当前的 http 上下文。我只想“调用它并忘记它”,而不是让它影响我所在的页面。当另一个页面完成时(被调用的那个页面),它是来自 OTHER 页面的响应缓冲区,它被发布到当前页面上。我希望呈现我当前的页面,就好像没有发生 Server.TransferRequest 一样。希望有另一种方法可以在没有传输命令的情况下做到这一点。如果没有,客户将只需要等待。 :-(
  • 我刚刚在处理文件时遇到了this。也许这种方法可以工作(异步/等待)。我不太了解,你得深入挖掘看看它是否适用。
  • 感谢您的建议。感谢你们抽出时间来帮助我。

标签: asp.net asynchronous server.transfer


【解决方案1】:

iframe 方法可能有效。在您的页面上创建一个隐藏的 iframe,并根据需要将 .aspx 页面加载到其中。

// add query string if needed.
$(".hiddenIframe").attr("src", "pdf-generator.aspx?fname=" + fname + "&fid=" + fid);

当页面被加载(通过'src')时,代码隐藏将执行。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多