【问题标题】:Razor UMBRACO show PDF filesRazor UMBRACO 显示 PDF 文件
【发布时间】:2016-08-30 12:29:28
【问题描述】:

我在 umbraco 6 中有以下内容。

我在媒体部分有一个文件夹结构:

媒体 -文件 --PDF

PDF 文件夹的 ID 为“2465”。

如何让 Umbraco 显示位于 PDF 文件夹中的所有 PDF 文件?我已经设置了模板、文档类型和宏。

宏别名称为 ViewPDF 并指向 ViewPDF.cshtml 文件。我只需要 CSHTML 代码。到目前为止我尝试过的方法都不起作用。

以下是我尝试过的一个 sn-ps:

@inherits umbraco.MacroEngines.DynamicNodeContext

@使用 umbraco.MacroEngines;

@{ int mediaFolderId = 2465;

DynamicMedia folder = new DynamicMedia(mediaFolderId);

    <div class="ViewPDF">
        @foreach (dynamic media in folder.Children.Items)
    {
            if (media.ContentType.Alias  == "ViewPDF")
            {

                  <a href="@media.umbracoFile"><img src="css/pdf.png" alt="ViewPDF" /></a>

            }
    }
    </div>   

}

提前致谢

【问题讨论】:

    标签: pdf razor umbraco


    【解决方案1】:

    尝试使用 folder.Children 而不是 folder.Children.Items

    【讨论】:

    • 删除 .items 没有帮助。代码是否正确,我是否使用了正确的属性等?是否需要更多信息才能给出更好的答案?
    • 只是为了确定您的 pdf 文件使用的是哪种媒体类型?
    【解决方案2】:

    我会这样做:

    var myContent = Umbraco.TypedContent(id); -> For content nodes.
    

    这将返回IPublishedContent。那么接下来就可以这样查询了:

    var something = myContent.GetProperty("myAlias")
    

    查看here

    在U6中你也可以使用Content Service

    编辑-片段:

    @{
        var rootNode = Umbraco.TypedMedia(1078);
        foreach (var item in rootNode.Children)
        {
             <p>@item.DocumentTypeAlias - @item.Id - @item.GetPropertyValue("umbracoFile")</p>
        }
    }
    

    所以,我正在对我正在查询的媒体文件夹上的节点进行硬编码,在你的情况下可能是 2465。虽然我不会硬编码这个......按它的类型查询它,如果它是自定义的,得到那个。

    这是片段的输出:

    文件 - 1079 - /media/1001/1452119_10152065755207915_1678786930_n.jpg

    文件 - 1080 - /media/1002/gumkfjn.png

    图片 - 1081 - /media/1003/tumblr_madtynbo2m1r54uxao1_400.jpg

    这些是我在硬编码节点上方的 3 个子节点,我正在打印它们的类型别名、id 和 umbraco 文件路径属性。您可以对子项进行排序,或按特定文档类型对其进行查询。

    例如:

    rootNode.Children.Where(x => x.DocumentTypeAlias.Equals("File"))
       .OrderByDescending(x => x.CreateDate))
    

    这只会返回按“CreateDate”排序的“文件”节点。

    【讨论】:

    • 您好,感谢您的回答。我在让它工作时遇到问题,你能帮我写完整的代码 sn-p 吗?这样我就可以看到我在尝试中做错了什么。
    • 感谢您抽出宝贵时间回答我! :) 我试图在开始时使用:@inherits Umbraco.Web.Macros.PartialViewMacroPage,但它返回错误:d:\web\localuser\MYWEBPAGE\public_html\MacroScripts\635221538203258173_ViewPDFv2.cshtml(8):错误 CS1061:“Umbraco.Core.Models.IPublishedContent”不包含“GetPropertyValue”的定义,并且找不到接受“Umbraco.Core.Models.IPublishedContent”类型的第一个参数的扩展方法“GetPropertyValue”(您是否缺少using 指令或程序集引用?)。有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2017-11-26
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2011-02-24
    相关资源
    最近更新 更多