Отображение функций C1 на внешней странице - данные отсутствуют

У меня есть вспомогательное приложение (YetAnotherForum.NET), которое находится в дочернем каталоге моего сайта Composite C1. Чтобы поддерживать единообразие внешнего вида, я хочу использовать функции C1 для элементов навигации.

Примечание. Во всех HTML-разметках в приведенном ниже коде заостренные скобки заменены квадратными скобками, чтобы разрешить публикацию здесь.

Я понял, что могу вызывать функции C1, используя этот синтаксис:

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

Тем не менее, данные за функцией, кажется, недоступны. Есть идеи, что может быть проблема с данными? Возможно, мне нужна внешняя страница для наследования от какой-либо формы страницы Composite C1?

Вот код функции:

@using Composite.Data;
@using Composite.Data.Types;
@using Composite.Data.ProcessControlled.ProcessControllers.GenericPublishProcessController;

@using CompositeC1Contrib.RazorFunctions;

@inherits CompositeC1WebPage

@functions {
    private IEnumerable FooterLinkPages ()
    {
        IEnumerable pages = DataFacade.GetData ();
        IEnumerable returnPages;

        используя (соединение DataConnection = новый DataConnection())
        {
            returnPages = (от l в соединении.Get()
                           присоединить p на страницах l.Page равно p.Id
                           где l.PublicationStatus == GenericPublishProcessController.Published
                            && p.PublicationStatus == GenericPublishProcessController.Published
                           порядок по л.положению по возрастанию
                           выберите p).ToList();
        }

        return returnPages;
    }
}

[ul class="unstyled"]
@foreach (страница IPage в FooterLinkPages())
{
    [li]@(String.IsNullOrWhiteSpace(page.MenuTitle)? page.Title: page.MenuTitle)[/a][/li]
}
[/ Мкл]

1 ответ

Решение

Вам нужно обернуть код доступа к данным в:

using(Composite.Core.Threading.ThreadDataManager.EnsureInitialize())
{
    using (DataScope localeScope = new DataScope(new System.Globalization.CultureInfo("en-NZ")))
    {
        ...
    }
}
Другие вопросы по тегам