2016-05-13 8 views
0

UmbracoのブログコンテンツをXMLにエクスポートするブログのエクスポートパッケージがあります。Umbraco子ノードをリストに設定するには<T>

NewsItemノードでコメントセクションをchildNodeとして設定していますが、このフォーマットを使用してchildNodeからリストにデータを取り込むにはどうすればよいですか?ここで

が私のコードです:

public List<BlogPosts> getPostList() 
{ 
    var contentType = ApplicationContext.Current.Services.ContentTypeService 
     .GetContentType("umbNewsItem"); 
    var nodes = ApplicationContext.Current.Services.ContentService 
     .GetContentOfContentType(contentType.Id).Select(content => new Node(content.Id)); 

    return nodes.Select(node => new BlogPosts() 
    { 
     Title = node.GetProperty("title").ToNullSafeString(), 
     BodyText = node.GetProperty("bodyText").ToNullSafeString(), 
     PublishDate = node.GetProperty("publishDate").ToNullSafeString(), 
     Author = node.GetProperty("author").ToNullSafeString(), 
     Image = node.GetProperty("image").ToNullSafeString(), 
     //This is where I want to grab the blog comments content 
     Comments = node.ChildrenAsList.Add("comments") 
    }).ToList(); 
} 

これで私の最初の試み、私は.Add上のエラー( "コメント")を取得読み込む行:

The best overloaded method match for 'System.Collections.Generic.List<umbraco.interfaces.INode>.Add(umbraco.interfaces.INode)' has some invalid arguments 

次の事I

Comments = node.ChildrenAsList<BlogComment>.Add("comments").ToList() 

次のエラーを返す:

このでしてみましたこのエラーを返さ

Comments = node.ChildrenAsList.Add("comments").ToList() 

The best overloaded method match for 'System.Collections.Generic.List<umbraco.interfaces.INode>.Add(umbraco.interfaces.INode)' has some invalid arguments 

これは私のブログ記事のモデルである:

public class BlogPosts 
{ 
    public string Title { get; set; } 
    public string BodyText { get; set; } 
    public string PublishDate { get; set; } 
    public string Author { get; set; } 
    public string Image { get; set; } 
    public List<BlogComment> Comments { get; set; } 
} 

public class BlogComment 
{ 
    public string Comment { get; set; } 
    public string CommentDate { get; set; } 
} 

これはUmbracoの一例である

The property 'umbraco.NodeFactory.Node.ChildrenAsList' cannot be used with type arguments 

は私もこれを試してみましたバックオフィスページ: Image

私はstackoverflowの全体検索し、リストにchildNodeがからデータを呼び出すことを意味しますが、これを使用するときに、ここでリストタイプは、iノードである何のためにグーグルました:

Comments = node.ChildrenAsList 

それがこのエラーを返します。

オーケー
Cannot implicitly convert type 'System.Collections.Generic.List<umbraco.interfaces.INode>' to 'System.Collections.Generic.List<UmbracoBlogsExportPackage.Models.BlogComment>' 
+0

Dude。あなたはあなたが試したことを説明しなければなりません。スタックオーバーフローを尋ねる前に少しだけ調べたことを示す必要があります。あなたは働いていないものを説明しなければなりません。さもなければ私達はあなたを助けることができません。私はこの質問を見て、「彼は何が問題になっていますか?あなたが既に試したことに関するエラー情報や情報を含んでいないからです。 良い質問をする助けがあります: –

+0

Stack Overflowあなたが本当に立ち往生して、あなたがすべてを研究したときに、あなたがそれをして、それから学習しなければならない、あなたが考えることができるすべてを試しましたが、あなたの質問にすべてを入れることができ、より良い助けを得ることができます。 –

+0

私も試しました: 'Comments = node.ChildrenAsList.Find(System.Predicate .Find(System.Predicate < (umbraco.interfaces.INode>)に無効な引数があります。 –

答えて

1

は、すべての

  • まず:-)、.Add()はSOMETを追加しようコレクションにヒンジがあるので、 はここでは機能しません。

  • 第2に、Content as Nodesを選択するのは少し後ろだと思うので、私は はそれをやろうとしません。

  • 第3に、IEnumerableには が動作すると思われるCast()メソッドがあります。私は本当にそれをテストすることはできません。

また、これは非常にテストされていませんが、このようなものを試してみてください。明らかにDocTypeエイリアスのコメントは分かりませんので、そのビットを変更することを忘れないでください:-)

public List<BlogPosts> getPostList() 
{ 
    var contentType = UmbracoContext.Current.Application.Services.ContentTypeService 
     .GetContentType("umbNewsItem"); 
    var contentService = UmbracoContext.Current.Application.Services.ContentService; 
    var nodes = contentService.GetContentOfContentType(contentType.Id); 

    return nodes.Select(node => new BlogPosts() 
    { 
     Title = node.GetValue("title").ToNullSafeString(), 
     BodyText = node.GetValue("bodyText").ToNullSafeString(), 
     PublishDate = node.GetValue("publishDate").ToNullSafeString(), 
     Author = node.GetValue("author").ToNullSafeString(), 
     Image = node.GetValue("image").ToNullSafeString(), 
     //This is where I want to grab the blog comments content 
     Comments = contentService.GetChildren(node.Id).Where(x => x.ContentType.Alias == "Comment").Cast<BlogComment>().ToList() 
    }).ToList(); 
} 
+0

ありがとう、残念ながら、 コメント= contentService.GetChildren(node.Id).Where(x => x.ContentType.Alias == "Comment")。 '非静的なフィールド、メソッド、またはプロパティにオブジェクト参照が必要です 'Umbraco.Core.Services.ContentService() .GetChildren(int) '' あなたのご意見ありがとうございました。 ドキュメントタイプのエイリアスは「comments」 –

+0

私のためにコンパイルされていますか?静的メソッドと静的メソッド/クラスを混在させていますか? –

+0

クラス全体を表示するためにペーストビンのリンクを送信したいですか?私はクラスにスタティックメソッドはありません ここにペーストビン:[ペーストビンリンク](http://pastebin.com/dTpPwn2J) –

関連する問題