在外部页面中呈现 C1 函数 - 缺少数据



我有一个子应用程序(YetAnotherForum.NET)存在于我的复合C1站点的子目录中。为了保持一致的外观和感觉,我想为导航元素引入 C1 函数。

注意:下面代码中的所有html标记都用方括号替换了尖括号,以便在此处发布。

我已经发现我可以使用以下语法调用 C1 函数:

[f:function ID="Function1" name="Custom.Layout.FooterLinks" runat="server"/]

但是,该函数背后的数据似乎不可用。任何想法可能是什么数据问题?也许我需要外部页面从某种形式的复合 C1 页面继承?

下面是函数代码:

@using 复合数据;@using 复合型.数据型;@using Composite.Data.ProcessControlled .ProcessControllers.GenericPublishProcessControllers;@using CompositeC1Contrib.RazorFunctions;@inherits 复合C1网页@functions {    private IEnumerable FooterLinkPages()    {        IEnumerable pages = DataFacade.GetData();        IE可数返回页;        使用 (数据连接连接 = 新的数据连接())        {            返回页数 = (从连接中的 l。获取()                           在页面上加入 P 等于 l.Page 等于 p.Id                           其中 l.PublicationStatus == GenericPublishProcessController.Published                            &&p.PublicationStatus == GenericPublishProcessController.Published                           顺序 l.位置升序                           选择 P)。ToList();        }        返回返回页面;    }}[ul class="unstyled"]@foreach (FooterLinkPages()中的IPage页面){    [li]@(String.IsNullOrWhiteSpace(page.菜单标题) ?页。标题 : 页面。菜单标题)[/a][/li]}[/ul]
您需要将数据

访问代码包装在:

using(Composite.Core.Threading.ThreadDataManager.EnsureInitialize())
{
    using (DataScope localeScope = new DataScope(new System.Globalization.CultureInfo("en-NZ")))
    {
        ...
    }
}

最新更新