Как проверить, является ли EPIserver.Core.ContentReference истинным или содержит что-то? - PullRequest
0 голосов
/ 11 октября 2018

На нашем сайте EPIserver есть блок KeyVisualBlock.В основном это заголовочный раздел наших страниц, состоящий из таких вещей, как изображение героя, заголовок страницы.

Наши пользователи хотели бы иметь возможность вставить форму в эту область страницы.

Поэтому я изменил наш Model KeyVisualBlock.cs, чтобы включить возможность выбора формы, добавив:

[CultureSpecific]
[Display(Order = 90,
GroupName = SystemTabNames.Content)]
[AllowedTypes(typeof(FormContainerBlock))]
public virtual ContentReference ContactForm { get; set; }

Теперь я хотел бы проверить, содержит ли это поле форму, а затем отобразить форму в нашем представлении.Итак, в нашем представлении я пытаюсь сделать что-то вроде этого:

@{ 
    if (Model.CurrentKeyVisualBlock.ContactForm) {
        // do something.
    }
}

Но Visual Studio сообщает мне, что:

Невозможно неявно преобразовать тип 'EPIserver.Core.ContentReference' ввведите 'bool'

Какой предпочтительный способ проверить это?

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете проверить, установлена ​​ли ссылка на контент следующим образом:

if (!ContentReference.IsNullOrEmpty(Model.CurrentKeyVisualBlock.ContactForm))
{
    // Do stuff
}

Но имейте в виду, что даже если ссылка на контент не равна нулю, контент, на который она ссылается, может не существовать.Чтобы быть уверенным, что вам действительно нужно загрузить контент, желательно так:

// Constructor injected IContentRespository into field contentRepository.
if (this.contentRepository.TryGet<FormContainerBlock>(Model.CurrentKeyVisualBlock.ContactForm, out var formContainerBlock))
{
}
...