我有一个子应用程序(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; using (DataConnection connection = new DataConnection()) { returnPages = (from l in connection.Get() join p in pages on l.Page equals p.Id where l.PublicationStatus == GenericPublishProcessController.Published && p.PublicationStatus == GenericPublishProcessController.Published orderby l.Position ascending select p).ToList(); } return returnPages; } } [ul class="unstyled"] @foreach (IPage page in FooterLinkPages()) { [li]@(String.IsNullOrWhiteSpace(page.MenuTitle) ? page.Title : page.MenuTitle)[/a][/li] } [/ul]
答案 0 :(得分:1)
您需要将数据访问代码包装在:
中using(Composite.Core.Threading.ThreadDataManager.EnsureInitialize())
{
using (DataScope localeScope = new DataScope(new System.Globalization.CultureInfo("en-NZ")))
{
...
}
}