1

我可以通过这种方式获取图像:

foreach (var pic in AsAdam(Content, "Images").Files)

1.按名称或上传日期对图像进行排序的正确方法是什么?

2.如何自定义重新排序图像?

4

3 回答 3

2

“文件夹”本身不提供排序。我有两个建议

  1. 要么做一些文件有前导数字的事情——输出中没有显示。这就是我在应用程序目录上所做的,所以每个文件都有一个“31 个输出编辑”——这样我可以在批量上传它们之前在我的本地系统中对它们进行预排序

  2. 由于每个文件都可以包含元数据,因此您可以向元数据添加优先级或排序字段并使用它进行排序。

  3. 您也可以始终按文件信息(如日期)对对象进行排序 - 这使用 DNN FileInfo 对象

于 2016-06-01T06:29:54.847 回答
2

为了对元数据字段进行排序,我使用了以下代码:

var filesAll = AsDynamic(AsAdam(Content, "Images").Files) as IEnumerable<dynamic>;
var filesWithMetadata = filesAll.Where(x=>x.HasMetadata).Where(x=>x.Metadata.Enabled).OrderBy(x=>x.Metadata.Sort);
var files = filesWithMetadata.Concat(filesAll.Where(x=>!x.HasMetadata));
}
@foreach(var pic in files){
 <div style="clear: both">
  <img src="@pic.Url?w=200&h=200&mode=crop" title="@pic.FileName" style="float: right">
  <h3>@pic.Metadata.Title</h3>
  Has Meta: @pic.HasMetadata 
  <div>Description: @Html.Raw(pic.Metadata.Description)</div>
 </div>
}
于 2016-07-15T05:48:47.527 回答
0

只是对任何对此答案有疑问的人的更新,对于 2sxc v8.7(不确定其他版本),我必须删除一行的 .Where(x=>x.Metadata.Enabled) 部分才能摆脱每次我将任何元数据添加到特定集合中的任何照片时,它都会失败,不知道为什么会这样,但如果没有那张照片,它似乎仍然可以正常工作。

另外,如果人们不清楚, .OrderBy(x=>x.Metadata.Sort 意味着它正在寻找您定义的称为“排序”的元数据,如果您调用元数据,则定义其他内容(如 SortOrder,定义作为数字),然后将该语句更改为您使用的元数据的名称(例如 .OrderBy(x=>x.Metadata.SortOrder )。

感谢您发布这个问题和解决方案,这是一个很大的帮助。

于 2016-12-07T20:36:10.553 回答