c# - 在数据绑定(bind)之前过滤掉 Sitecore 项目

标签 c# .net sitecore

我想从 Sitecore.Data.Items 类型的列表中过滤/删除项目。 这就是我填写列表的方式。

List<Item> actueelItems = Sitecore.Context.Database.SelectItems("/sitecore/content/destil_nl/Home/").ToList();

我有一个检查项目是否有效的方法。这将返回 true 或 false。 我想建立一个新列表,我将调用 filteredList,其中仅包含有效项目。

实现此目标的最佳方法是什么?

顺便说一句,这是我的验证方法:

public static bool ValidateItem(Item item)
    {
        return ValidateItem(item, true);
    }


public static bool ValidateItem(Item item, bool checkVisualization)
{
    bool result = true;
    if (item.Versions.Count <= 0 ||
        !item.Publishing.IsValid(DateTime.Today, false) ||
        (checkVisualization && item.Visualization.GetLayout(Sitecore.Context.Device) == null))
    {
        result = false;
    }

    return result;
}

目前我正在使用 itemDataBound 中的检查,但该项目仍将显示,只是具有错误的值。我想我必须过滤列表,并将过滤后的列表作为数据源。我只是不知道如何使用 ValidateItem 轻松过滤此列表。

最佳答案

我已经解决了自己的难题。 在我有列表的地方,我将只运行一个 linq .where 并验证我的项目:

actueelItems = actueelItems.Where(c => MenuItemHelper.ValidateItem(c, false)).ToList<Item>();

将来可能对其他人很方便!

关于c# - 在数据绑定(bind)之前过滤掉 Sitecore 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324919/

相关文章:

javascript - ASP.NET 中文本框的按键事件

c# - 如何将任何类型的日期转换为 dd/mm/yyyy

c# - 将值从用户控件传递到主页 aspx

asp.net - ascx中的Updatepanel刷新整个控件

logging - 使用 SIM-Tool 导入后 Sitecore 实例不再记录

c# - 如何从 ViewModel 正确执行异步方法?

c# - 如何从 WPF RichTextBox 的 TextChangedEventArgs 中提取更改

.net - 将Dictionary设置为IList时VB.Net不会引发编译器错误

solr - 当我在 Sitecore 7 中使用 SOLR 调用 context.GetQueryable<SearchResultItem>().ToList() 时,我收到 "Object reference not set (...)."

.net - 在 Visual Studio 中使用 x64 库的 F# 类型提供程序