1

我正在处理一个应该使用访问者组来个性化其内容的页面。但是,我似乎无法让访问页面标准匹配。

我假设 Visited Page 标准使用该类EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion,该类将查看的页面存储在 HttpContext 会话中,并带有键EPiServer:ViewedPages。不幸的是,当我进入指定页面时,似乎根本没有添加会话密钥。

有谁知道为什么它不起作用?


编辑:我现在尝试自己实现 Criterion,基本上使用来自EPiServer.Personalization.VisitorGroups.Criteria.ViewedPagesCriterion. 事实证明,该标准订阅了一个VisitedPage据称在访问页面时引发的事件。通过调试,我已经确定事件订阅成功,但是事件处理程序从来没有被调用过。这意味着,出于某种原因,EPiServer 不会引发事件。

我尝试订阅该StartRequest事件,在这种情况下调用了处理程序。这就引出了一个问题:为什么VisitedPage在访问页面时没有引发事件?

4

1 回答 1

1

VisitedPage仅当通过具有ViewedPageCriterionAttribute. EPiServer 提供的基本控制器 EPiServer.Web.Mvc.PageController<T>具有该属性,因此当控制器从该控制器继承时它可以工作。

如果您不想使用PageController,则必须在您的自定义控制器上使用该属性:

[ViewedPageCriterion]
public class MyController<T> : Controller<T> where T : IDefaultModel
{
    // controller implementation
}
于 2015-05-13T06:48:01.437 回答