2016-09-07 2 views
1

나는 블로그 저장소를 가지고 있으며 블로그 게시물 목록을 가지고 있습니다. 나는 지금은 속성에 액세스하고 그 값을 얻을 수 있지만, 몇 가지 속성 내가 JSON을 얻을 수Umbraco 블로그 게시물의 속성을 가져 오기

foreach (var blog in blogPostList) 
    { 

     foreach (var property in blog.Properties) 
     { 

     } 

    } 

를 사용하여 I 사용자 정의 데이터 형식 속성에 액세스하고이 코드 이제

var contentType = ApplicationContext.Services.ContentTypeService.GetContentType("BlogPost"); 

var blogPostList = ApplicationContext.Services.ContentService.GetContentOfContentType(contentType.Id); 

를 사용하여 모든 블로그 게시물에 접근하고 String과 json string을 적절한 json으로 적절히 파싱하기 위해 모델을 생성해야하므로 저로서는 쓸모가 없습니다.

이 상황에서 또는 다른 방법으로 GetPropertyValue를 사용하여 올바른 형식의 Json을 얻는 방법이 있습니까?

답변

2

바로 그만! 이것이 프론트 엔드를위한 것이라면 ContentService를 사용하지 마십시오. 특히 사이트의 백엔드를위한 것이며 매우 데이터베이스 집약적입니다.

모든 프런트 엔드 코드의 경우 IPublishedContent를 사용해야합니다. 이것은 콘텐츠 캐시를 쿼리하고 데이터베이스 액세스가 없으므로 훨씬 빠릅니다.

UmbracoHelper (Umbraco 컨트롤러에서 사용 가능)를 사용중인 경우 상자에서 바로 액세스 할 수 있습니다. 그렇지 않으면 도우미를 위로 돌려야합니다. 그런 다음 페이지 목록을해야합니다, 그리고 필드에서 값을 얻기 위해 표준 .GetPropertyValue 방법을 사용할 수 있습니다

var umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current); 

var blogPosts = umbracoHelper. TypedContentAtXPath("//BlogPost [@isDoc]"); 

예를 들면 다음과 같습니다이다. 여기서 XPath 쿼리는 매우 효율적이지 않으므로 원하는 경우 훨씬 더 구체적으로 지정할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. Umbraco.ContentQuery.Search ("promotionPost") 나는 이것이 ContentAtXPath와 같다고 생각합니다. 이제 GetPropertyValue()에 액세스 할 수 있습니다. – Epistemologist

관련 문제