【问题标题】:Can you Render an ASP.Net control in a Non ASP.Net page via AJAX您可以通过 AJAX 在非 ASP.Net 页面中呈现 ASP.Net 控件吗
【发布时间】:2024-05-01 20:55:02
【问题描述】:

我们有一个用 Classic ASP 编写的旧页面,它通过 Prototype 库的 Updater 对象调用现有的 .asp 页面。

此调用在请求中传递了一些查询字符串参数,并接收到要更新的参数列表以及要呈现到主 asp 页面上的 HTML/JS 块。

页面生命周期似乎使事情变得复杂,但在实际的服务器控件或用户控件中实现是可行的。

[编辑] 我想澄清/简化最初的问题:有没有办法在非 ASP.NET 页面中呈现 ASP.NET 控件(.ascx 或服务器控件)?

理想情况下,它将通过 AJAX 调用并返回一个 HTML 文本块 - 以及将状态传输到接收页面的某种方式。

【问题讨论】:

    标签: asp.net ajax asp-classic prototypejs session-state


    【解决方案1】:

    您可以将控件放置在返回原始 HTML 作为输出的 Web 服务中,并从 AJAX 调用 Web 服务,使用动态 HTML 将结果放置在您想要的任何位置。您可能必须使用控件的输出缓冲区才能使其按您希望的方式工作。

    【讨论】:

    • 我认为这可能是我们拥有的最好的镜头......我会尝试使用数据库来保存我们需要的任何讨厌的状态信息。
    【解决方案2】:

    您可以将 IFRAME 放入包含 aspx 页面的 asp 中,并使用某种机制来传递参数,可能通过 QueryString 值?

    asp 页面可以将条目(参数)写入表中,创建一个 ID(Guid),该 ID(Guid)传递到检索​​条目的 aspx 页面?

    【讨论】:

    • 如果可能的话,我想避免使用 IFRAME,但是有什么常见的技术可以从 IFRAME 返回值吗?
    • 我不确定,但可以通过javascript进行通信吗?系统是否可以在 .net 中重新实现该 asp? (相信你已经问过自己了)
    • 是的,系统确实使这成为可能,尽管我们试图避免它 b/c 网站的大部分其余部分都与 ASP 会话有关。最好的方法可能是通过传递 GUID 来共享会话状态。我仍然相信必须有一种方法可以在非 asp.net 页面中呈现 asp.net 控件。我会澄清问题和希望。
    【解决方案3】:

    假设您的网络服务器可以在目标框架上运行 .aspx 文件,那么是的,您可以将控件/页面的结果呈现为经典的 asp 页面或普通的旧 html 页面。您不能提供任何服务器端功能,因此您只需呈现控件/页面的 html 生成结果。

    【讨论】: