Отображение изображения из медиатеки в Умбрако 7
Это должно быть что-то смущающе простое, но я не могу заставить его работать: я просто хотел бы отобразить изображение, которое было загружено в библиотеку мультимедиа Umbraco (Umbraco 7.1.1) в шаблоне частичного просмотра. Код
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var imgNode = CurrentPage.BannerBackgroundImage;
var imgUrl = umbraco.library.NiceUrl(imgNode);
<div id="banner-wrapper" style="background: url('@imgUrl') center center no-repeat;">
<!-- some irrelevant content -->
</div>
}
где BannerBackgroundImage - это пользовательское свойство страницы. Когда это отображается, однако, @imgUrl
заменяется на #
,
Другие альтернативы, которые я пробовал, - это несколько изображений Media Picker, как отображать изображение Media Picker, получать изображение с медиа с помощью Razor и отображать изображение с Media Picker, и это лишь некоторые из них.
Я был бы очень признателен, если бы кто-нибудь мог помочь мне с тем, что я считаю вопросом новичка!
8 ответов
Я нашел этот путь легким и чистым:
@if (CurrentPage.Image != null && !(CurrentPage.Image is Umbraco.Core.Dynamics.DynamicNull))
{
var m = Umbraco.Media(CurrentPage.Image);
<img src="@m.Url" alt="@m.UrlName" />
}
Я надеюсь, что это помогает кому-то еще
Спасибо Иисус Моголлон,
Я свернул это, чтобы:
<img src="@Umbraco.Media(CurrentPage.headerBackgroundImage).Url" alt="">
Я установил файл как обязательный, так что, надеюсь, мне не понадобится часть оператора if.
Если бы у меня было такое неожиданно трудное время для чего-то, что, как я думал, было бы легко, это отрезала работу для меня.
@if (Model.Content.HasValue("OtherImages"))
{
var otherImages = Model.Content.GetPropertyValue<List<IPublishedContent>>("OtherImages");
foreach (var image in otherImages)
{
if (image != null)
{
<img src="@image.Url" alt="@image.Name" class="img-responsive img-rounded" />
}
}
}
Большая часть других сообщений не работала для меня, но я думаю, что API немного изменился. Я использую Umbraco 7.6.1. Я не уверен, нужна ли проверка нуля, но это, конечно, не принесет вреда.
Это сработало для меня, из документов Umbraco 6 Media, здесь
var bannerImage = Umbraco.TypedMedia(Model.Content.GetPropertyValue("plainImage"));
<div class="my-banner-wrapper" style="background-image: url(@bannerImage.GetPropertyValue("umbracoFile"));">
<!-- some irrelevant content -->
</div>
Попробуй это
@if (CurrentPage.Image != null && !(CurrentPage.Image is Umbraco.Core.Dynamics.DynamicNull))
{
var m = Umbraco.Media((int)CurrentPage.Image);
<img src="@m.Url" alt="@m.UrlName" />
}
примечание: вы должны привести CurrentPage.Image как int из-за неоднозначного конструктора Umbraco.Media
<img src="@Umbraco.Media(Convert.ToString(@Umbraco.Field("image"))).umbracoFile" alt="" />
Я ввел это в раздел над типом документа в используемом шаблоне или мастере.
@{
Layout = null;
var regionalPage = Umbraco.Content(this.CurrentPage.Id);
string manangerPhotoUrl = string.Format("https://assets.yourdomain.com{0}", @Umbraco.Media(regionalPage.managerPhoto).Url);
}
Затем я добавил переменную, содержащую строковое значение, в мой атрибут источника изображения в разметке.
<img class="img-responsive" src="@manangerPhotoUrl" />
Внутри шаблона
Umbraco: Macro runat = "server" language = "cshtml"
img src="@Model.MediaById(Model.photo).umbracoFile" alt=""/
/ Umbraco: Макро
---Model.photo = фотография - имя Алисы