Sharepoint 2010客户端对象模型从Url获​​取List项

G.S*_*ers 5 c# sharepoint-2010

有没有办法通过Url获取List对象?

我知道你可以通过标题获得一个列表:

ClientContext context = new ClientContext("http://foo");

List list = context.Web.Lists.GetByTitle("title");

context.Load(list);
context.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

但我希望用户能够在文本框中将浏览器中的URL复制粘贴(例如http://foo/subsite/ListName/Forms/AllItems.aspx),然后从该URL中提取List对象.

CBo*_*ono 5

不,没有List直接从URL 获取对象的方法.正如您所指出的,您可以从List标题中获取它,您也可以通过其ID获取它(请参阅参考资料ListCollection.GetById).

我的建议是做一些URL黑客攻击; SharePoint URL遵循可预测的模式.如果用户正在复制/粘贴列表URL,他们肯定会拥有一个视图的URL,这将以类似的方式结束/Forms/[ViewName].aspx.在路径中查找"/ Forms /",获取前面的子字符串,然后使用路径的新结尾作为列表名称.

通过尝试加载列表来进行一些防御性编码很容易,ArgumentException如果列表不存在则捕获该列表,并将其用作向用户显示错误消息的机会.