如何从SharePoint Online中的项目获取页面布局

时间:2016-01-19 10:15:49

标签: c# sharepoint sharepoint-online

我试图弄清楚如何获取特定页面使用的页面布局,但没有贬值。

我使用的代码是:

 public void ItemAddedHandler(ClientContext clientContext, Guid listId, int listItemId) {

    var web = clientContext.Web;

    List list = clientContext.Web.Lists.GetById(listId);
    ListItem item = list.GetItemById(listItemId);
    clientContext.Load(item, i => i["PublishingPageLayout"]);

    // item["PublishingPageLayout"] should contain the Page Layout used but is empty.
}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

在尝试访问项目属性之前,请务必在ExecuteQuery对象上调用ExecuteQueryAsync / clientContext

使用客户端对象模型时,在执行这些方法之前所做的一切实际上都是构建要检索的内容的查询,但在您自己执行查询之前,不会发送/接收任何内容进出SharePoint。

答案 1 :(得分:0)

正确的代码如下。我必须检查updateitem eventhandler中的pagelayout属性,而不是在itemadded处理程序中。

public void ItemUpdatedHandler(ClientContext clientContext, Guid listId, int listItemId, ContextInfo logContext) {
    ListItem item = list.GetItemById(listItemId);
    clientContext.Load(item, i => i["PublishingPageLayout"], i => i.DisplayName);
    clientContext.ExecuteQuery();
    FieldUrlValue fuv = (FieldUrlValue)item["PublishingPageLayout"];
}