【问题标题】:Umbraco how to use image property id to get URLUmbraco 如何使用图像属性 id 获取 URL
【发布时间】:2014-07-25 12:55:12
【问题描述】:

好吧,我对 Umbraco/C# 很陌生,我想做的是循环自定义媒体类型,为我的应用程序主页构建横幅,@bannerUrl 始终返回图像属性 ID,而不是文件资源的路径。您将如何从 Umbraco 中创建的自定义媒体类型中检索图像文件路径。

参见代码示例:

var mediaFolder = Umbraco.Media(mediaFolderId);
var banners = mediaFolder.Children();

foreach (var banner in banners)
    {
     var bannerUrl = banner.image;

      <div style="background-image:url(@bannerUrl);"></div>

 }

默认情况下,变量bannerUrl 始终返回图像 ID,而不是 URL 的文件路径。如何使文件路径正常工作?在 VS 的调试器中检查横幅对象的内容时,我注意到 Url 属性有以下错误:

Url = 'banner.Url' threw an exception of type 'System.NotSupportedException'

您可能会认为我可以使用 .Url 行中的某些东西,但这似乎不起作用,所以任何建议我将如何使用动态方式在 Umbraco 中获取图像属性的 URL。

谢谢。

【问题讨论】:

    标签: c# umbraco umbraco7


    【解决方案1】:

    如果有人偶然发现此问题的解决方案:

     var bannerId = Umbraco.Media(banner.image); //banner.image is the property id.
     var bannerUrl = bannerId.Url;
    

    【讨论】:

    • 偶然发现并使用。非常感谢您提供直接的解决方案。
    • 你不想用这个。这会访问数据库并减慢页面加载时间。使用下面指定的 UmbracoHelper。
    【解决方案2】:

    要在 MVC 控制器/API 控制器中执行相同操作,一旦您拥有“媒体 ID”,您还可以使用 UmbracoHelper。

    var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
    var image = umbracoHelper.Media(mediaID);      // mediaID =  the (int)ID of the media
    var imageURL = image.url;                      // imageURL now has the site root relative path of the media item
    

    【讨论】:

      【解决方案3】:

      现在在 Umbraco 中使用强类型模型要好得多:

      var bannerMediaItem = Umbraco.TypedMedia(banner.image); //banner.image is the property id.
      var bannerUrl = bannerMediaItem.Url;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-10
        • 1970-01-01
        • 2019-02-07
        • 2010-09-29
        • 2021-12-31
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        相关资源
        最近更新 更多