【问题标题】:Is it possible to get the HTML out of a DataList\Repeater using Ajax(Jquery)?是否可以使用 Ajax(Jquery) 从 DataList\Repeater 中获取 HTML?
【发布时间】:2010-08-05 12:06:15
【问题描述】:

我有一个带有repeater\datalist 控件的asp.net 页面。我在页面加载期间绑定此网格并显示相册的前 20 个缩略图。

可以有多个页面,我有一个寻呼机 1 2 3。当用户单击第二页 (2) 时,我会去获取第二组相册缩略图并显示。

目前这是一个回发,当我显示第二页时,整个页面都会刷新。

现在甚至可以使用 Ajax\jquery 来获取带有所有缩略图的 html 的第二页并进行渲染吗?这样页面就再也没有回帖了,我可以避免页面刷新?

【问题讨论】:

    标签: asp.net html


    【解决方案1】:

    您有多种选择:

    • asp:UpdatePanel 用于中继器

    优点:很容易做到,只需用 asp:UpdatePanel 控件包装你的转发器。

    缺点:您将使用所有视图状态将帖子发送回服务器,服务器运行整个页面生命周期并仅重新调整页面的一部分。其他缺点here

    • jQuery.load 只插入页面的一部分

    优点:也很容易实现,您需要管理在您的 aspx 页面中为 GET 请求加载正确的页面(即,将 ?page=2 添加到查询字符串并在服务器端进行处理)。之后,您将转发器包装在您可以在客户端识别的 div 中并执行 jQuery.load()(检查文档here

    缺点:您仍会将整个页面发送回客户端。此外,如果您在 DataList 中依赖视图状态进行回发,这可能会搞砸。

    • 纯 Ajax 调用以获取数据并将其呈现回客户端

    优点:最适合发送回服务器以及从服务器发送到客户端的内容。

    缺点:您将在客户端用自己的渲染/模板引擎替换 DataList/Repeater 以完成这项工作。

    【讨论】:

    • asp:UpdatePanel 不是一个选项,因为我没有部署巨大的 .net ajax dll
    • 在您的第三个选择中:假设我用 jquery 函数替换了网格,该函数循环了结果并构建了网格。这对于文本数据来说很好,但我有缩略图并且我只是从数据库中获取文件路径。您的解决方案需要我将 元素(jquery)的 src attr 设置为这些图像路径?这些不会向图像文件的 Web 服务器发送一个单独的 http 请求吗?我每页有 50 个缩略图。所以我最终会向服务器发送 50 个单独的 http 请求以获取每个页面的缩略图?不对?我只想发送一个 http ajax 请求并获取所有缩略图。可行吗?
    • 我的输入按钮不起作用。无法添加新行。这么大的一段
    • 无论如何,即使在第一页请求中,您最终也会对 html 页面有一个 http 请求,对缩略图有 50 个请求(可能还有其他对 css、脚本等的请求)...这就是它在任何页面上的工作方式。您可以采取一些措施来减少请求的数量,例如 css sprites(将多张图像组合成一张图像并通过 css 渲染其中的一部分),但我不确定它是动态/“每个产品”缩略图的好解决方案
    【解决方案2】:

    HTML 5 具有内联图像数据的概念,而无需通过单独的请求提取位所需的 href。在 v5 出现之前,请考虑使用 jquery 来获取给定页面 # 作为输入的缩略图 url 列表。使用非常少的 jquery,您现在可以使用转发器重新绘制您正在渲染的内容,并且服务器往返次数尽可能少。

    如果您担心多个图像 GET,要实施的另一项优化是使用子域 (images.yoursite.com) 引用您的图像路径,以使浏览器将您的图像与您的主页面数据并行提取。浏览器使用最多 2 个并发线程来提取页面数据时使用了一些奇怪的规则,但前提是源不在同一个根 URL 中。

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2019-10-25
      • 2011-01-22
      • 2015-10-08
      • 2021-01-02
      相关资源
      最近更新 更多