Получить URL-адрес изображения из MacroPartialView Umbraco 8

Привет, раньше я мог получить URL-адрес изображения из макроса с помощью:

var imgMain = Model.MacroParameters["image"];
    int imgWidth = Convert.ToInt32(Model.MacroParameters["imageWidth"]);
    var mediaItemOne = Umbraco.TypedMedia(imgMain);
    <img src='@mediaItemOne.Url.GetCropUrl(width:imageWidth)' alt=''/ >

Что нового в Umbraco 8, так как теперь я получаю следующую ошибку и не могу найти документацию о том, как это сделать:

UmbracoHelper» не содержит определения для «TypedMedia», и не может быть найден доступный метод расширения «TypedMedia», принимающий первый аргумент типа «UmbracoHelper» (вам не хватает директивы using или ссылки на сборку?)


person George Phillipson    schedule 28.02.2019    source источник


Ответы (3)


Вместо Umbraco.TypedMedia просто используйте Umbraco.Media API-интерфейсы были упрощены, поскольку динамика больше не поддерживается, а прежний метод больше не нужен.

То же самое касается контента — TypedContent исчез, и теперь Umbraco.Content возвращает строго типизированный элемент IPublishedContent.

person Robert Foster    schedule 01.03.2019

Хорошо, если кто-нибудь наткнется на этот пост, вот как я наконец заставил его работать в Umbraco 8.

@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using Umbraco.Web;
@using Umbraco.Web.Composing
@{
    var img         = Model.MacroParameters["image"].ToString();
    int imageWidth  = Convert.ToInt32(Model.MacroParameters["imageWidth"]);
    var udi         = Udi.Parse(img);
    var imgUrl      = Current.UmbracoHelper.ContentQuery.Media(udi).Url;

    <img src='@imgUrl.GetCropUrl(width:imageWidth)' alt='' />
}
person George Phillipson    schedule 28.02.2019
comment
Обратите внимание, что Current.UmbracoHelper точно такой же, как использование свойства Umbraco - теперь вы можете использовать Umbraco.Media... также см. мой ответ ниже. Руководство Umbraco HQ заключается в том, что статический объект Current (или Singleton, как его называют) никогда не следует использовать, и в большинстве случаев у вас уже есть все необходимое для доступа к контенту, мультимедиа и многому другому. - person Robert Foster; 01.03.2019

Попробуй это

@inherits Umbraco.Web.Mvc.UmbracoViewPage

@{
    var site = Model.Root();
    var bannerImage = Model.Value<IPublishedContent>("bannerImage");

}

<img scr="@bannerImage.Url" />
person Snow    schedule 09.05.2019