在 Umbraco 7 中按名称或哈希获取媒体文件夹

Get Media folder by name or hash in Umbraco 7

我正在使用 Umbraco 7.4。

我想枚举媒体文件夹 ("Images\Splash") 中的所有文件。

对于自定义class,我从控制器传递UmbracoHelper实例的引用,并且可以像这样获取文件夹:

var folder = _umbraco.Media(333);

333 是我想要的 Media 文件夹的 ID。

如何通过哈希或名称获取此文件夹?
我不想使用 Id,因为不能保证这在环境(开发、暂存、生产)之间是相同的。

我认为你做不到 :-/ 但你可以将其设为网站某处的 属性(或宏中的参数),这样你就不必在任何地方对 ID 进行硬编码.

您无法使用 Umbraco Helpers 按名称获取媒体项目。

我的方法是使用 Web.config 转换,为每个环境(即本地、暂存和实时等)设置不同的节点 ID。

<add key="HomeNodeId" value="xxxx" />

然后创建一个 class 来调用这些不同的 NodeId。

请参阅以下文章: https://weblogs.asp.net/srkirkland/common-web-config-transformations-with-visual-studio-2010

祝你好运

克雷格

事实证明,您可以使用 UmbracoHelper (_umbraco) 按名称获取媒体文件夹:

            var mediaService = _umbraco.UmbracoContext.Application.Services.MediaService;
            var imagesFolder = (IPublishedContent)mediaService.GetRootMedia().FirstOrDefault(m => m.Name.InvariantEquals("Images"));
            var folder = imagesFolder?.Children().FirstOrDefault(c => c.Name.InvariantEquals("Splash"));