Umbraco如何使用image属性id来获取URL

rtn*_*rtn 11 c# umbraco umbraco7

好吧,我对Umbraco/C#非常新,我想要做的是循环自定义媒体类型为我的应用程序的主页构建横幅,@bannerUrl总是返回images属性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>

 }
Run Code Online (Sandbox Code Playgroud)

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

Url = 'banner.Url' threw an exception of type 'System.NotSupportedException'
Run Code Online (Sandbox Code Playgroud)

虽然我可以在.Url线上使用某些东西,但这似乎不起作用,所以任何建议如何使用Dynamic方式获取URL在Umbraco中的图像属性.

谢谢.

rtn*_*rtn 16

解决方案,如果有人碰巧偶然发现:

 var bannerId = Umbraco.Media(banner.image); //banner.image is the property id.
 var bannerUrl = bannerId.Url;
Run Code Online (Sandbox Code Playgroud)


小智 9

要在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
Run Code Online (Sandbox Code Playgroud)