是否可以不将这些控件封装在 aspx 文件中?Register 标签让我觉得它不是。
6 回答
您不能直接调用 ascx 页面,它们不能提供任何 html 而不添加到 aspx 或然后动态呈现以响应任何页面/处理程序。
一种可能的方法是拥有一个通用的 ascx 存根页面,该页面在正常的 Web 表单中充当 ascx 的主机,使用 JQuery 的 $.ajax() 方法对该页面进行回调,并带有一些参数来表示 ascx 控制你想加载。
然后在您的存根/主机页面上,覆盖渲染方法并使用 response.output.write 将控件直接渲染到输出流。客户端上的回调处理程序将捕获输出,然后可以以正常方式或使用允许指定 DOM 元素的 $.load() 版本将其插入 DOM。
希望这可以帮助。
自从我开始越来越多地使用 jQuery/Ajax 之后,我发现我使用服务器控件的次数越来越少。
我以前放入控件的东西现在只是加载到面板中的单个 aspx 页面。
如果您有旧的 ASCX 文件,将它们转换为 ASPX 应该不会太难
不。
也就是说,您可以将 ascx 放在 UpdatePanel 中,并使用标准的 Asp.Net 回发机制将面板的内容设置为可见/不可见。
或者您可以编写一个单独的 IHttpHandler 来生成您的 Javascript 代码使用 DOM 添加到页面的 HTML 代码。然而,这部分页面将无法在 PostBack 中访问。
不,ASCX 是存在于 ASPX 上的用户控件。您需要将其设为 Page,或转换为 Handler。