【问题标题】:SharePoint CSOM Document Title throws errorSharePoint CSOM 文档标题引发错误
【发布时间】:2016-03-24 02:19:51
【问题描述】:

在我第一次使用 csom 和文档库时,我在尝试使用以下代码以 file.File.Title 形式访问文档库对象属性时遇到了一个棘手的错误。

错误是

 Object reference not set to an instance of an object on server.

显示的代码对我的练习“有效”。

我缺少哪一步才能使用 file.File.Title 而不是 file.FieldValues["Title"]。

代码 sn-p 是一种非常原始的尝试,用于获取默认文档库文件夹中的文件列表。在接下来的迭代中,我需要更新 caml 以检索特定文件。

        var lib = ctx.Web.DefaultDocumentLibrary();
        ctx.Load(lib);
        ctx.ExecuteQuery();

        var files = lib.GetItems(CreateAllFilesQuery());
        ctx.Load(files);
        ctx.Load(files, items => items.Include( item => item.File.Title ));
        ctx.ExecuteQuery();

        foreach(var file in files )
        {
            if(!(file.FieldValues["Title"] == null) )
            {
                string FileName = file.FieldValues["Title"].ToString();
                if (FileName == DocumentName)
                    return true;
            }
        }

    public static CamlQuery CreateAllFilesQuery()
    {
        var qry = new CamlQuery();
        qry.ViewXml = @"<View Scope=\'FilesOnly\'>
            <Query></Query>
            <ViewFields>
               <FieldRef Name='Title'  />
               <FieldRef Name='ContentType' />
               <FieldRef Name='DocIcon' />
            </ViewFields>
        </View>";
        return qry;
    }

【问题讨论】:

    标签: sharepoint csom


    【解决方案1】:

    经过进一步研究,我发现我的 caml 查询有问题。语法错误是在 Scope 值周围放置斜杠。更正后的查询允许我按预期引用 file.File.Title。额外的好处是我只取回文件而不是文件和文件夹。

    qry.ViewXml = @"<View Scope='FilesOnly'>
        <Query></Query>
        <ViewFields>
           <FieldRef Name='Title'  />
           <FieldRef Name='ContentType' />
           <FieldRef Name='DocIcon' />
        </ViewFields>
    </View>";
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 1970-01-01
      • 2022-06-22
      • 2019-07-07
      • 2020-10-05
      • 2010-12-29
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多