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

时间:2016-10-11 11:14:16

标签: umbraco umbraco7

我使用的是Umbraco 7.4。

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

对于自定义类,我从控制器传递UmbracoHelper实例的引用,并且可以得到如下文件夹:

var folder = _umbraco.Media(333);

333是我想要的媒体文件夹的ID。

如何通过哈希或其名称获取此文件夹?
我不想使用Id,因为在环境(开发,登台,制作)之间不能保证这一点。

3 个答案:

答案 0 :(得分:5)

事实证明,您可以使用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"));

答案 1 :(得分:0)

我认为你不能: - /但是你可以把它变成网站上的某个属性(或宏上的参数),这样你就不必在任何地方对ID进行硬编码。 / p>

答案 2 :(得分:0)

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

我这样做的方法是使用Web.config Transformations为每个环境设置不同的Node Id(即Local,Staging& Live等)。

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

然后创建一个用于调用这些不同NodeId的类。

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

祝你好运

克雷格