gpt4 book ai didi

c# - EPiServer 9 : Is there any real alternative for EPiServer ContentArea Contents?

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:37 25 4
gpt4 key购买 nike

我是 EPiServer 的初学者。我们使用 EPiServer 版本 9.12。EPiServer.Core.ContentArea 过去有一个现在已过时的内容列表,请参阅:http://world.episerver.com/documentation/Class-library/?documentId=cms/7.5/284B326A

image http://jweschenfelder.de/download/Untitled.png

Contents 列表在过去具有优势,您可以读取 block 的名称,因为它读取了 ContentArea 的全部内容。检索名称会很棒,因为如果您在 CMS 中创建新 block ,则可以在 CMS 中配置它。如果我改用现在建议的 Items 集合,我将无法读取包含 Link items 集合的 block 的名称,然后我只能读取 block 内的 Link items 集合。

我看过这个例子:
IContentLoader contentLoader = ServiceLocator.Current.GetInstance< IContentLoader >();
OnSiteLinkBlock itemBlock = contentLoader.Get(item.ContentLink, new LoaderOptions() { LanguageLoaderOption.MasterLanguage() });

我可以编辑 OnSiteLinkBlock,但其他属性仍然为空,并且未由 EPiServer 的 ContentLoader 填充(IContentLoader 是 EPiServer 的接口(interface))。

有关类层次结构的更多信息:
- [AvailableContentTypes(Availability = Availability.None)]<br/> public class BlockData : ContentData, IReadOnly< BlockData >, IReadOnly (在 EPiServer.Core 中)
- public abstract class BlockBase : BlockData (BlockBase是一个自己的类)
- public class OnSiteLinkBlock : BlockBase (OnSiteLinkBlock 是一个自己的类)

有人知道这里的解决方案吗?如何读取 ContentArea 的更多属性?或者是否存在 ContentArea 的替代方案?非常感谢!

最佳答案

通常您使用 ItemsFilteredItems 属性从 ContentAreas 读取内容。他们返回一个可枚举的 ContentAreaItem的。

使用 IContentLoader 解析 IContent 实例并使用 ContentLink 提供给它

var loader = ServiceLocator.Current.GetInstance<IContentLoader>();

// contentarea is called UpperArea in the example
var icontentItems = currentPage.UpperArea
.FilteredItems
.Select(x => loader.Get<IContent>(x.ContentLink));

// example render in razor
foreach (var icontentItem in icontentItems)
{
<h2>@icontentItem.Name</h2>
}

关于c# - EPiServer 9 : Is there any real alternative for EPiServer ContentArea Contents?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41491464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com