在EPiServer 8日前解決了這個:
在出版事件(在你的例子),其出現的頁面發佈之前,它應該工作的罰款只是用ContentLoader服務進行比較。 ContentLoader將自動獲取發佈的版本。
if (e.Content != null && !ContentReference.IsNullOrEmpty(e.Content.ContentLink))
{
var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
var publishedVersionOfPage = contentLoader.Get<IContent>(e.Content.ContentLink);
}
注意:僅適用於已存在的頁面,IE。新的頁面將在e參數中有一個空的 ContentLink(ContentReference.Empty)。
至於頁面發佈後發生的PublishedPage事件。 您可以使用下面的代碼片段獲得以前發佈的 版本保持(如果有的話):
var cvr = ServiceLocator.Current.GetInstance<IContentVersionRepository>();
IEnumerable<ContentVersion> lastTwoVersions = cvr
.List(page.ContentLink)
.Where(p => p.Status == VersionStatus.PreviouslyPublished || p.Status == VersionStatus.Published)
.OrderByDescending(p => p.Saved)
.Take(2);
if (lastTwoVersions.Count() == 2)
{
// lastTwoVersions now contains the two latest version for comparison
// Or the latter one vs the e.Content object.
}
注:這個答案並不需要本地化的帳戶。