2012-07-04 3 views
0

Composite C1 사이트의 하위 디렉토리에 하위 애플리케이션 (예 : YetAnotherForum.NET)이 있습니다. 일관된 모양과 느낌을 유지하기 위해 탐색 요소의 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

:

다음은 기능 코드의이 글 알고 있어요 - HTTP : //docs.composite. net/FAQ/개발자? q = YetAnotherForum + + C1 % 3F와 함께 + How + + + 통합하는 방법 - YAF와 C1 모두 조금 오래된 것입니다. – Gavin

+0

이것이 맞는지 확인하십시오. 그러나 외부 소스에서 데이터를 가져 오는 데 문제가 발생하면 http://docs.composite.net/Data/DataFAQ?q=What+does+%22ThreadDataManager+hasn%27t와 관련 될 수 있습니다. + been been + initialized ... % 22 + 예외 + 평균 % 3F – mawtex

+0

건배 mawtex - 거의! DataScope뿐 아니라 데이터가 때때로 존재할 수도 있고 때로는 존재하지 않을 수도 있습니다 (주로 그렇지 않습니다). – Gavin

답변

1

당신의 데이터 액세스 코드를 포장해야합니다 : BTW

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