Есть ли способ получить доступ к медиасборщику без использования @Model в Umbraco 7.6.3? - PullRequest
0 голосов
/ 29 декабря 2018

Я взял на себя управление веб-сайтом, созданным в Umbraco 7.6.3, и компания, которая создала систему, использовала традиционный .Net MVC.Это означает, что большая часть функциональности, присущей Umbraco, потеряна.

Мне нужно иметь возможность отображать изображения, выбранные с помощью Media.Picker, однако единственное место, где я могу найти любую документацию по доступу к этому объекту, - все это требуетЯ использую @Model в umbraco для разрешения URL выбранного изображения.

Если я пытаюсь использовать стандартную модель Umbraco путем наследования

@inherits Umbraco.Web.Mvc.UmbracoViewPage 

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

Невозможно связать тип источника ClassName.Web.ViewModels.Templates.HomeViewМодель для модели типа Umbraco.Core.Models.IPublishedContent.

Я строю необходимый раздел страниц с использованием частичного представления

Любые предложения будут очень очень полезны для меня?? !!!

В приведенном ниже коде - @ogimageId.ToString() возвращает следующее

[ Umbraco.Web.PublishedCache.XmlPublishedCache.PublishedMediaCache+DictionaryPublishedContent ]

, и я не могу понять, хоw, чтобы получить либо URL-адрес непосредственно из этого объекта, ни его идентификатор, чтобы я мог использовать метод ниже, чтобы получить URL-адрес из идентификатора изображения ...

@using Umbraco.Web;
@using Umbraco.Web.Extensions;
@using ClientDependency.Core.Mvc;
@{
    dynamic ogimageId = Umbraco.Field("ogimage", recursive: true);
    <!-- ogimageUrl: @ogimageId.ToString() -->
    string ogimage = Umbraco.Media(1143).umbracoFile.ToString();
}
<meta property="og:image" content="@ogimage" />

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Так что я понял это, прежде чем кто-то успел ответить ... Вот решение ... я не знал, что это будет так просто ... Html.Raw конвертирует идентификатор для вас.

string ogimageId = Html.Raw(Umbraco.Field("ogimage", recursive: true)).ToString(); string ogimage = Umbraco.Media(ogimageId).umbracoFile.ToString();

0 голосов
/ 30 декабря 2018

Вы можете использовать MediaService для доступа к медиа.

@ApplicationContext.Current.Services.MediaService.GetById(1143).GetValue<string>("umbracoFile")

Затем извлечь URL из этой строки json.

dynamic media = JsonConvert.DeserializeObject(ApplicationContext.Current.Services.MediaService.GetById(1068).GetValue<string>("umbracoFile"));

Наконец, @media.src даст вамURL.

...