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

标签 c# asp.net episerver

我是 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/

相关文章:

c# - 一种方法接受两个不同的对象

c# - Unity3D PlayableDirector向后播放时间轴动画

asp.net - 如何在网络表单中包含部分 View

来自 EPiServerUI.master 的 Episerver 嵌套母版页

asp.net - EPiServer 与带有页面类型生成器的 EPiServer

c# - 工厂对象由于依赖于自身而导致 stackoverflowException

c# 对象引用未设置为对象的实例

c# - Asp.Net core实时数据库?

javascript - 如何阻止 asp listview 中的动态侧边栏崩溃?

asp.net - .aspx 扩展名的自定义 404 页面错误