2016-09-07 118 views
1

我有博客庫,它包含博客文章列表。我通過使用此代碼Umbraco獲取博客文章的屬性

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

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

現在我訪問自定義數據類型的屬性通過使用

foreach (var blog in blogPostList) 
    { 

     foreach (var property in blog.Properties) 
     { 

     } 

    } 

現在我可以訪問屬性和獲得它的價值,但對於一些屬性,我得到JSON訪問所有博客文章字符串,這對我來說沒有用,因爲我需要創建模型來正確地將json字符串解析爲合適的json。

有沒有什麼辦法可以在這種情況下使用GetPropertyValue或其他方式來獲取格式正確的Json。

回答

2

停在那裏!如果這是用於前端,請勿使用ContentService。這是特別爲網站的後端,並非常數據庫密集型。

對於所有的前端代碼,您應該使用IPublishedContent。這會查詢內容緩存,並且速度更快,因爲沒有數據庫訪問。

如果你有一個UmbracoHelper(你將在Umbraco控制器中),你可以直接使用它,否則你需要啓動一個幫助器。這裏有一個例子:

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

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

然後,您將有頁面列表,並且可以使用標準的.GetPropertyValue方法來獲取值從田野。請注意,這裏的XPath查詢並不是非常高效,如果您願意,可以使其更具體。

+0

感謝您的回覆我結束了使用 Umbraco.ContentQuery.Search(「promotionPost」) 我認爲這與ContentAtXPath相同。現在我可以訪問GetPropertyValue()。 – Epistemologist