可以使用 jQuery.load() 函数加载 ASCX 吗?

Posted

技术标签:

【中文标题】可以使用 jQuery.load() 函数加载 ASCX 吗?【英文标题】:Possible to load ASCX with jQuery.load() function? 【发布时间】:2010-11-15 19:21:07 【问题描述】:

是否可以不将这些控件封装在 aspx 文件中? Register 标签让我觉得不是。

【问题讨论】:

【参考方案1】:

您不能直接调用 ascx 页面,它们不能提供任何 html 而不添加到 aspx 或然后动态呈现以响应任何页面/处理程序。

【讨论】:

【参考方案2】:

一种可能的方法是有一个通用的 aspx 存根页面,它在正常的 Web 表单中充当 ascx 的主机,使用 JQuery 的 $.ajax() 方法回调该页面,并带有一些参数来表示什么ascx 控件要加载。

然后在您的存根/主机页面上,覆盖渲染方法并使用 response.output.write 将控件直接渲染到输出流。客户端的回调处理程序将捕获输出,然后可以以正常方式或使用允许指定 DOM 元素的 $.load() 版本将其插入到 DOM 中。

希望这会有所帮助。

【讨论】:

【参考方案3】:

这是load ASCX controls through jQuery, using an ASMX service that creates a Page instance to render the user control 的一种方式。

【讨论】:

【参考方案4】:

自从我越来越多地开始使用 jQuery/Ajax 后,我发现我使用服务器控件的次数越来越少。

我以前放入控件的东西现在只是加载到面板中的单个 aspx 页面。

如果您有旧的 ASCX 文件,将它们转换为 ASPX 应该不会太难

【讨论】:

【参考方案5】:

没有。

也就是说,您可以将 ascx 放在 UpdatePanel 中,并使用标准 Asp.Net 回发机制将面板的内容设置为可见/不可见。

或者您可以编写一个单独的 IHttpHandler 来生成您的 javascript 代码使用 DOM 添加到页面的 HTML 代码。但是,这部分页面将无法在 PostBack 中访问。

【讨论】:

【参考方案6】:

不,ASCX 是存在于 ASPX 上的用户控件。您需要将其设为 Page,或转换为 Handler。

【讨论】:

以上是关于可以使用 jQuery.load() 函数加载 ASCX 吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery.load() 函数加载角度页面

jQuery.load()事件使用方法详解

通过 JQuery .load 将多个文件加载到一个 div 中?

jquery load 方法回显数据

jQuery load和unload函数使用

IE8中jQuery.load()加载页面不显示的原因