如何检查EPIserver.Core.ContentReference是否为真或包含某些内容?

时间:2018-10-11 12:31:47

标签: c# asp.net-mvc episerver

我们在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'隐式转换为   输入“布尔”

首选的检查方式是什么?

1 个答案:

答案 0 :(得分:2)

您可以检查内容引用是否设置如下:

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

但是请记住,即使内容引用不是null,它所引用的内容也可能不存在。要确保确实需要实际加载内容,最好像这样:

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