检查Umbraco节点长度

时间:2015-01-28 15:44:07

标签: c# razor umbraco

我有一个通过我创建的空缺页面创建和填充的面板。我这样做:

@{
    var root = CurrentPage.AncestorOrSelf(1);
    var newsNode = root.Descendants("News").First();
    var vacanciesNode = root.Descendants("Vacancies").First();
    string shortenedSummary = string.Empty;
}

<ul>
    @foreach (var vacancyItem in vacanciesNode.Descendants("Vacancy").Take(3).OrderBy("postDate desc"))
    {
        <p>here we are 2</p>
        @vacanciesNode.Count().ToString()
        <li>
            <h4><a href="@vacancyItem.Url">@vacancyItem.jobTitle</a></h4> <span>Posted on @vacancyItem.postDate.ToString("dd/MM/yyyy")</span>
            <p>
                @if (vacancyItem.jobSummary.Length <= 182)
                {
                    @vacancyItem.jobSummary
                }
                else
                {
                    shortenedSummary = vacancyItem.jobSummary.Substring(0, 182) + "...";
                    @shortenedSummary
                }
            </p>

            <a href="@vacancyItem.Url" class="btn btn-purple">Read More..</a>
        </li>
    }

</ul>

但是,当没有空缺物品时,我的清单是空的。如果是这种情况,我希望它能够阅读&#34;抱歉,目前没有空缺&#34;但我不知道如何检查我的vacanciesNode是否有任何物品。

有人能告诉我如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

由于。Descendants()方法返回DynamicContentList(一个集合),您只需对集合执行.Count()并检查它是否大于或等于1.

如果集合中有超过0个项目,则它不是空的。

所以,你需要做的是用@foreach语句围绕你的@if语句检查一下,然后在else语句后打印你要显示的任何html如果有的话没有空缺

@if( vacanciesNode.Descendants("Vacancy").Take(3).OrderBy("postDate desc").Count() > 0) {
   //Do foreach
}
else
{
   //Write message about missing vacancies
}