【问题标题】:Kentico CMS 10 - DocumentHelper Attachment URLKentico CMS 10 - DocumentHelper 附件 URL
【发布时间】:2018-09-14 03:00:24
【问题描述】:

当使用 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 />

感谢您提供的任何帮助!

【问题讨论】:

    标签: c# asp.net kentico


    【解决方案1】:

    你可以在你的项目模板中尝试这样的事情:

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

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

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

    【讨论】:

    • 假设我从 C#/K# 后面的代码中执行此操作并通过 ASMX 服务和 Ajax 以 RESTful 方式返回自定义页面类型数据,我是否会返回 GUID 并设置 @ jQuery 生成的 &lt;img /&gt; 标记的 987654323@ 属性到类似 &lt;img src="/CMSPages/GetFile.aspx?guid=12345-foo-bar" /&gt; 的路径?包括加载图像的 HTML 是通过 jQuery/JavaScript 生成并附加到页面的。有一条路径可以让我轻松设置src
    • 这部分路径/CMSPages/GetFile.aspx?guid=是静态的。因此,请按照您选择的语言设置 guid 查询字符串值。您实际上只是将一个字符串连接在一起。
    • 这看起来可行,让我尝试一下并相应地标记答案。谢谢!
    • 我更新了答案以包含第二个解决方案。
    • URL 选择器绝对是一个更好的选择。为了质量文档,您能否详细说明有关使用该表单控件并以编程方式(DocumentHelper)检索值的答案?以防有人遇到类似问题。
    【解决方案2】:

    我花了几个小时才弄明白。

    就我而言,我能够使用以下方法获取图像 URL:

    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);
    

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多