Отображение функций 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")))
{
...
}
}