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

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

【问题讨论】:

    标签: asp.net asp.net-ajax jquery ascx


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:
        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          没有。

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2017-11-25
              • 2023-02-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-21
              相关资源
              最近更新 更多