我们在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'隐式转换为 输入“布尔”
首选的检查方式是什么?
答案 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))
{
}