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

时间:2014-07-25 12:55:12

标签: 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>

 }

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

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

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

感谢。

3 个答案:

答案 0 :(得分:16)

解决方案,如果有人碰巧遇到这个问题:

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

答案 1 :(得分:9)

要在MVC控制器/ API控制器中执行相同操作,一旦您拥有&#34;介质ID&#34;你也可以使用UmbracoHelper。

validates_uniqueness_of :service_type_reservations

答案 2 :(得分:3)

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

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