我正在使用Sharepoint 2010。
已创建Sharepoint门户的文档库。
据我所知,建议Library url不应包含任何空格。所以最初它是作为PPCompanies创建的。然后,为了使库名更加用户友好,可以通过库设置将其重命名为SC Documents。网址没有变化,它仍然是PPCompanies。
我在客户端对象模型中发现我必须使用带有空格的新标题“PP文档”访问库。但是,我想要url,以便我可以为我保存到库中的文档放置一个超链接。我该怎么做呢?我希望这是Sharepoint.Client.List对象的属性,但是在创建它时似乎没有设置这样的属性。
这是将文档保存到“PP公司”的代码。 “PP公司”的值可以在this.DocumentLibrary中找到;
public void Save(byte[] file, string url)
{
using (var context = newClientContext(this.SharepointServer))
{
context.Credentials = newNetworkCredential(this.UserName, this.Password, this.Domain);
var list = context.Web.Lists.GetByTitle(this.DocumentLibrary);
var fileCreationInformation = newFileCreationInformation
{
Content = file,
Overwrite = true,
Url = url
};
var uploadFile = list.RootFolder.Files.Add(fileCreationInformation);
uploadFile.ListItemAllFields.Update();
context.ExecuteQuery();
if (this.Metadata.Count > 0)
{
this.SaveMetadata(uploadFile, context);
}
}
}
private void SaveMetadata(File uploadFile, ClientContext context)
{
var item = uploadFile.ListItemAllFields;
foreach (var row inthis.Metadata)
{
item[row.Key] = row.Value;
}
item.Update();
context.ExecuteQuery();
}
所以这段代码有效。但是我不能使用“PP公司”来获取执行后我需要的超链接的URL。
我发现context.Url只是根文件夹url。
未设置list.RootFolder.ServerRelativeUrl。
答案 0 :(得分:1)
在使用SharePoint时使用客户端上下文时,需要在读取对象及其属性之前使用context.Load方法。
在您的情况下,在ExecuteQuery方法调用之前添加context.Load(list.RootFolder);
。然后列表对象和RootFolder属性将从服务器发送并可在客户端访问。