1

我可以通过将一系列缩略图作为一个数组在 Javascript 中执行此操作。然后我知道我何时在第一张照片或最后一张照片上,并且可以基于此显示控件。

如何使用 C#/ASP.NET MVC 3(razor) 在服务器端有效地完成这项工作?例如,在我的网站上,有 19 张照片中的一张。我想添加下一个/上一个功能。

我是否必须拉出整个照片数组,解析出当前照片,确定它是第一张还是最后一张,然后构建下一个/上一个按钮?

4

5 回答 5

1

当有一个照片库时,有许多照片中的一张照片,当有一个概念,比如x item from y items in where 时x < y,我们都会想到分页。照片库几乎就像一个带有一个项目和两个按钮的网格,用于转到下一页和上一页。如果您想自己实现分页,则无需获取所有照片并将它们与当前照片进行比较以创建下一个/上一个按钮。您所要做的就是缓存当前项目索引和所有照片的计数,并在每次渲染时计算是否需要渲染下一个、上一个或下一个和上一个按钮。

于 2011-07-11T06:14:21.557 回答
1

为每张图片加载一个完整的页面效率低下、速度慢,并且会很快将您的访问者赶出您的网站。

我最近使用以下技术创建了一个相当快的 ASP.NET MVC 照片库:

  1. 当访问者点击某个文件夹时,将向服务器发送一个 ajax 请求,请求该文件夹的缩略图集合(数据以 JSON 格式返回)
  2. 缩略图和其他 UI 组件是使用称为Knockout.js的模型视图视图模型框架呈现的(顺便说一句,这很棒!)。从服务器检索到的信息以 JSON 格式直接传递给敲除绑定模型,因此您不必进行任何序列化或编组。
  3. 当用户点击某个缩略图时,将向服务器发出 ajax 调用,以检索包含图像信息的 JSON 对象:a) 主图像 URL c) 下一张和上一张图像(如果有) d) exif 信息 c)该图像的评论等
  4. Knockout.js 知道如何将 prev 和 next 箭头(如果有)以及所有其他信息呈现给 UI 视图模型,因此它们会自动刷新。

如果你将它与一些服务器端缓存结合起来,你将拥有一个非常快速的照片库应用程序。

干杯!!

伊万

于 2011-11-02T23:26:03.247 回答
0

您没有指定客户端技术,Silverlight、ASP.NET MVC、ASP.NET Webforms、WPF、Winforms.. 概念如下。

  1. 选择客户/演示技术
  2. 确定照片的来源(数据库、Web 服务(数据库前端))
  3. 创建方法来获取特定系列的下一张和上一张照片(相册、用户、全局)
  4. 在向前或向后(按钮/图像)单击时调用这些方法。
于 2011-07-11T05:33:54.220 回答
0

您可以通过多种方式实现这一目标:

  1. 创建一个获取第一张照片的 aspx 页面并创建调用此相同 aspx 页面的按钮,但根据需要使用下一张或上一张照片的查询字符串。此解决方案将导致回发,因此您需要确定这是否适合您。
  2. 创建一个 aspx 页面,它会根据查询字符串为您提供一张照片,并通过 jQuery ajax 调用它。
  3. 创建一个 ASHX 文件,该文件为查询字符串参数返回不同的图像,并使其成为图像的 SRC。

这三种方法允许您进行不同级别的交互与回发。如果您决定要走哪条路线,我们可以帮助您到达那里:)

于 2011-07-11T05:43:11.673 回答
0

我不知道你为什么在 C# 中这样做。在 C# 中执行此操作时,我将使用ajax call。为此,我最初将仅加载第一张图像和总图像数。

根据总计数和当前图像不显示上一个和下一个按钮。

单击下一个和上一个按钮时,使用 ajax 调用从 db 中获取相应的图像。

我不知道如何使用,但是有很多 jquery 插件可以显示画廊

于 2011-07-11T06:08:26.983 回答