【问题标题】:From External Code, How do I Get Access to DynamicCode without a Module?从外部代码,如何在没有模块的情况下访问 DynamicCode?
【发布时间】:2021-05-06 01:32:26
【问题描述】:

我在自定义 2sxc 应用 (AppId = 10) 中有一个 Content-Type。内容类型名称是“SeasonSettings”,其中包含颜色、字体、图标和图像,用于每年修改几次网站的主题。没有视图或模块,客户端通过进入应用程序的管理、数据选项卡等来获取设置。

当尝试从 Home.ascx 中我的皮肤文件的 C# 代码访问它时,我有以下内容:

// the details you need to know
var appId = 7;                     // The AppId that of the target Content Type
string ctName = "SeasonSettings";  // The name of the Content Type
int entityId = 2345;               // The EntityId of the item with our settings
 
// get a handle to the App
var app7 = ToSic.Sxc.Dnn.Factory.App(appId);
 

现在我被困住了。由于我没有模块,因此我无法获得需要获取 DynamicCode 的 CmsBlock (BlockBuilder),因此我可以使用 AsList、AsEntity、AsDynamic 等。

所以我接下来的步骤是这样的:

// this fails because "AsList" is unknown
var setting = AsList(app7.Data[ctName])
  .Where(e => e.EntityId == entityId)
  .First()
;
 
<p>Color: @setting.BgColor</p>

无需在页面上放置模块/视图并使用 CmsBlock(tabId, moduleId) 等,还有其他方法可以从 app7 获取 DynamicCode 或任何调用/使用 AsList() 的方法吗?

【问题讨论】:

    标签: dotnetnuke 2sxc


    【解决方案1】:

    到目前为止,我认为没有一种简单的方法可以做到这一点,因为动态代码旨在用于 razor 文件和自定义 API。

    我建议你在这些东西初始化的地方快速创建一个隐藏模块,然后获取比块以供进一步使用。

    【讨论】:

    • 我现在很难过。 ;) 但我明白了,谢谢!!
    • 6 个多月后... v12 对此有何更改?未来有什么计划让这成为可能吗?
    • 这应该会成为本周发布的 v13... :)
    • 我对你的赞美不够频繁。 :)
    • 注意:我们没有在 12 月之前完成 - 但它将在 v13.02 - docs.2sxc.org/net-code/external/dotnet-external-use.html
    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 2011-03-04
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多