如何使用图像属性id来获取URL

本文关键字:获取 URL id 属性 何使用 图像 | 更新日期: 2023-09-27 18:14:54

Ok,我对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行,但这似乎不工作,所以有什么建议我将如何去获取URL的图像属性在Umbraco使用动态的方式。

谢谢。

如何使用图像属性id来获取URL

如果有人碰巧发现了这个解决方案:

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

要在MVC控制器/API控制器中做同样的事情,一旦你有了"media 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

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

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