Kentico CMS 10 - DocumentHelper附件URL

时间:2017-07-26 15:25:44

标签: c# asp.net kentico

使用CMS.DocumentEngine.DocumentHelper检索自定义页面类型的文档时,如何获取附加到Direct Uploader表单控件属性类型的图像的路径?

如果以下列方式检索文件/页面:

DocumentQuery documents = DocumentHelper.GetDocuments("Custom.PageType")
   .Path("/some-path", PathTypeEnum.Children)
   .OnCurrentSite()
   .Culture("en-us")
   .Published()
   .Page(page, size);

然后循环检索已检索的文档以投影到自定义类:

foreach(var document in documents) {
    Foo foo = new Foo(document.getStringValue("SomeCustomColumnName", ""));
    foos.add(foo);
}

使用getStringValue()定位自定义网页类型的Direct Uploader字段/属性会返回文档GUID,例如"123456f-5fa9-4f64-8f4b-75c52db096d5"

在转换中,我可以使用GetFileUrl()(如GetFileUrl("AttachmentColumnName")来获取路径,在处理检索到的文档时,如何在ASPX代码中使用它?

自定义页面类型数据通过ASMX服务和Ajax提供给客户端。返回的JSON数据用于生成/附加标记到页面,包括<img />

感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:2)

您可以在商品模板中尝试以下内容:

/CMSPages/GetFile.aspx?guid=<%# Eval("SomeCustomColumnName")%>

如果您不想要破坏图像,也可以在生成该链接之前检查SomeCustomColumnName是否为空。

另一个选项是将该文件上传转换为URL选择器,并允许用户将文件上载到媒体库。这可能是恕我直言的更好方法。

答案 1 :(得分:0)

我花了几个小时才弄清楚。

就我而言,我可以使用以下方法获取图片网址:

Guid pageGuid = ValidationHelper.GetGuid(this.GetValue("ProductPage"), new Guid());

// Creates a new instance of the Tree provider
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

CMS.DocumentEngine.TreeNode doc = DocumentHelper.GetDocuments()
    .Where(d => d.NodeGUID == pageGuid)
    .FirstOrDefault();

CMS.DocumentEngine.TreeNode pageNode = tree
    .SelectNodes()
    .WithGuid(doc.DocumentGUID)
    .OnCurrentSite()

var document = DocumentHelper.GetDocument(pageNode, tree);
Guid imageGuid = document.GetGuidValue("ImageProperty", new Guid());
DocumentHelper.GetAttachmentUrl(imageGuid, 0);