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)