排序 2sxc adam 文件

Sort 2sxc adam files

我可以这样获取图像:

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

1.What 是按名称或上传日期对图像排序的正确方法吗?

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

"folder" 本身不提供排序。我有两个建议

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

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

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

  4. 的 DNN FileInfo 对象

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

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>
}

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

此外,如果人们不清楚,.OrderBy(x=>x.Metadata.Sort 意味着它正在寻找您定义的名为 "Sort" 的元数据,如果您调用您定义的元数据其他东西(如 SortOrder,定义为数字),然后将该语句更改为您使用的元数据片段的名称(例如 .OrderBy(x=>x.Metadata.SortOrder )。

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