我们如何在单页应用程序中按需加载 2sxc 内容块?

How can we load 2sxc content-blocks on demand in a single page app?

目标:在单页应用程序中按需加载 2sxc 内容块。 如果我们可以获得为内容块提供支持的数据,而不是标记,那也很好。

这是使用来自 webapi 端点的标记进行响应的第一个天真尝试:

[HttpGet]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
[ValidateAntiForgeryToken]
public dynamic CityDetails(string id)
{
    return from city in AsDynamic(App.Data["City"]) 
        where city.Name == id
        select new {
            Name = city.Name,
            Details = city.Details.Aggregate("", (markup, contentBlock) =>
                markup += contentBlock.Render())
        };
}

不胜感激!

这不是问题的答案,而是我们使用的解决方法。

我们用这种结构制作了一个内容类型:

  • 简介
  • 配置文件详细信息实体 A
  • 个人资料详细信息实体 B

我们制作了两个 API 端点:

  • 获取个人资料概览
  • 获取个人资料详细信息

端点提供来自 WYSIWYG 的数据和标记的混合,它提供客户端模板。

在版本 2 中,出于 SEO 的原因,我们将构建更类似于 2sxc 博客应用程序的应用程序。制作一些动画会更加困难,但目前保守地倾向于服务器渲染似乎是个好主意。