我有一个子应用程序(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")))
{
...
}
}