【问题标题】:Using FindPagesWithCriteria in Episerver returns no results在 Episerver 中使用 FindPagesWithCriteria 不会返回任何结果
【发布时间】:2013-10-10 20:51:32
【问题描述】:

我想知道是否有人遇到过这个问题。我正在尝试使用 FindPagesWithCriteria,并且我正在创建我的属性标准,如下所示:

PropertyCriteria dateCriteria = new PropertyCriteria();
dateCriteria.Condition = CompareCondition.GreaterThan;
dateCriteria.Name = "PageStopPublish";                
dateCriteria.Type = PropertyDataType.Date;
dateCriteria.Value = DateTime.Now.ToString();
dateCriteria.Required = true;

所以我试图找到所有未过期的页面。但是,某些页面可能没有设置 StopPublish 属性,在这种情况下应使用 Datetime.MaxValue。但在这种特殊情况下(没有设置 StopPublish 值) FindPagesWithCriteria 不会返回任何结果。这是有原因的还是一个错误?作为一种解决方法,我使用 PageTypeName 标准返回,然后为返回的 PageDataCollection 应用一些额外的过滤器

【问题讨论】:

    标签: episerver


    【解决方案1】:

    FindPagesWithCriteria 只会为您提供已发布的页面(以及当前用户有权访问的页面),因此不需要将 StopPublish 作为条件。

    FindAllPagesWithCriteria 将返回所有页面,包括未发布的页面和当前用户无权访问的页面。

    【讨论】:

    • 同意,或者执行 FilterByVisitor,因为这也将只包括未过期的页面(取决于您需要实现的目标)。
    • 感谢您的解释。我想我理解这两种方法背后的概念。
    【解决方案2】:

    具有空值的 EPiServer 属性永远不会存储在数据库中。如果您从代码中访问它,它将始终为空。

    要使用 PropertyCriteria 搜索空属性,请将 IsNull 属性设置为 true

    【讨论】:

    • 嗨,我知道 Episerver 中的空属性返回 null,但并非在所有情况下都返回。如果未指定,则调用 GetPage 时,StopPublish 属性将返回 Datetime.MaxValue。我认为 FindPagesWithCriteria 也会这样做。顺便说一句,设置 IsNull 也没有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多