2016-09-07 22 views
1

私はブログリポジトリを持っており、ブログ投稿リストを含んでいます。私は今、私は今、私はプロパティにアクセスし、その値を得ることができますUmbracoブログ投稿のプロパティを取得

foreach (var blog in blogPostList) 
    { 

     foreach (var property in blog.Properties) 
     { 

     } 

    } 

を使用して、カスタムデータ型のプロパティにアクセスしていますが、いくつかの性質のために、私はJSONを取得

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

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

このコードを使用して、すべてのブログの投稿にアクセスしています私は適切な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

関連する問題