クライアントオブジェクトモデルを介してSharepoint2010ページライブラリにページを作成しようとしていますが、その方法の例が見つかりません。私は2つのアプローチを試しました:
1つ目は、Pagesライブラリをリストとして扱い、リストアイテムを追加することです。
static void createPage(Web w, ClientContext ctx)
{
List pages = w.Lists.GetByTitle("Pages");
//ListItem page = pages.GetItemById(0);
ListItemCreationInformation lici = new ListItemCreationInformation();
ListItem li = pages.AddItem(lici);
li["Title"] = "hello";
li.Update();
ctx.ExecuteQuery();
}
予想どおり、これは次のエラーメッセージで失敗しました。
To add an item to a document library, use SPFileCollection.Add()
私が試した次のアプローチは、それをファイルとして追加することでした。問題は、FileCreationInformationオブジェクトがバイト配列を予期していて、それに何を渡すかわからないことです。
static void createPage(Web w, ClientContext ctx)
{
List pages = w.Lists.GetByTitle("Pages");
FileCreationInformation file = new FileCreationInformation();
file.Url = "testpage.aspx";
file.Content = new byte[0];
file.Overwrite = true;
ctx.Load(pages.RootFolder.Files.Add(file));
ctx.ExecuteQuery();
}
上記のコードはページライブラリにアイテムを追加しますが、ファイルを開くと、編集できない空白のページが表示されます。さまざまなトピックを読んだことから、サーバー側のコードを介してのみページを追加できるのではないかと思います。何かご意見は?
ありがとう