可以使用 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 吗?的主要内容,如果未能解决你的问题,请参考以下文章