Sitefinity 中的 .NET Razor - 检查小部件中是否存在相关字段

.NET Razor in Sitefinity - Check if related fields exist in widget

为清楚起见编辑: 在使用相关数据的 Sitefinity (Feather) 中,我只想显示一个环绕的 HTML 标签或 header/footer每个仅当存在相关项目时 - 否则隐藏 HTML.

原题:

我正在 Sitefinity 中构建一个站点,并且有一个包含相关项目的模块。使用 Razor,我想看看是否有任何相关项目,然后在我的 foreach 周围显示内容,但我正在尝试的结果是错误的。

这是我尝试过的方法:

@if(Model.Item.Fields.RelatedPeople){
    <ul class="list">

    @foreach (var relatedItem in Model.Item.Fields.RelatedPeople){
        <li>@relatedItem.Title</li>
    }

    </ul>
}

我不是很懂 Razor 语法 - 如有任何帮助,我们将不胜感激!

错误信息如下:

Cannot implicitly convert type 'Telerik.Sitefinity.Frontend.Mvc.Models.ItemViewModel[]' to 'bool'

我不确定,但我想应该是这样的:

@if(Model.Item.Fields.RelatedPeople != null
     && Model.Item.Fields.RelatedPeople.Count() > 0){
    <ul class="list">

    @foreach (var relatedItem in Model.Item.Fields.RelatedPeople){
        <li>@relatedItem.Title</li>
    }

    </ul>
}

很奇怪你在if构造和foreach.

中使用RelatedPeople属性

发现您需要为此使用 .Length 而不是 .Count():

@if(Model.Item.Fields.RelatedPeople.Length > 0){
    <ul class="list">
        @foreach (var relatedItem in Model.Item.Fields.RelatedPeople){
            <li>@relatedItem.Title</li>
        }
    </ul>
}

有效!除非有超过 one zero "RelatedPeople"

,否则我的 ul 不会呈现