如何在 .ascx 中获取图像 url?

How to get image url in .ascx?

我在 Sitecore 中有一个图像字段,我需要它 url。在后面的代码中,我有一项:

Item contactSlide = itemHelper.GetItemByPath("/sitecore/content/AMM/Resources/Slides/Slide Contact");

.ascx 中看起来像这样:

<div class="contact-section grid-padding-big" style="background-image: url(img/bg.jpg)">

我需要用项目图像字段的 url 替换 img/bg.jpg

在中继器中,我通常在后面的代码中有一个方法:

    public string GetImageUrl(Item item)
    {
        Sitecore.Data.Fields.ImageField imgField = ((Sitecore.Data.Fields.ImageField)item.Fields["Bild"]);
        if (imgField.MediaItem != null)
        {
            string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(imgField.MediaItem);
            return mediaUrl;
        }
        return "";
    }

.ascx 中我这样称呼它:

<div style="background-image:url(<%# GetImageUrl((Sitecore.Data.Items.Item) Container.DataItem) %>)"></div>

这在中继器中使用此方法时有效。但是现在我只有一个项目。如何将项目传递给方法以获取其图像 url?或者还有其他方法吗?

您可以在 <%=%> 中的 .ascx 中使用代码,因此您可以简单地这样做:

<div style="background-image:url(<%= GetImageUrl(itemHelper.GetItemByPath("/sitecore/content/AMM/Resources/Slides/Slide Contact")) %>)"></div>

你也可以在你的代码后面定义一个方法来直接从你已经解决的项目中获取url:

public string GetBackgroundImageUrl()
{
   Item contactSlide = itemHelper.GetItemByPath("/sitecore/content/AMM/Resources/Slides/Slide Contact");
   return this.GetImageUrl(contactSlide);
}

并在 .ascx 中调用它:

<div style="background-image:url(<%= GetBackgroundImageUrl() %>)"></div>