如何从绝对URL获取SPListItem?

时间:2013-10-14 17:16:59

标签: c# url sharepoint-2010 workflow-activity splistitem

当我尝试使用SPListItem时遇到问题。

这是代码:

string URL = "http://vstkmy36773/Lists/Permissions/DispForm.aspx?ID=6&ContentTypeId=0x0100F385377F0CAD6C438A23B301CE04E7BF"

using (SPSite cSite = new SPSite(URL))
{
   using (SPWeb cWeb = cSite.OpenWeb())
   {
     // SPFile file = cWeb.GetFile(URL);
    //  SPListItem item = file.Item;
        SPListItem item = cWeb.GetListItem(URL);                            
        int id = item.ID;
        item["Title"] = id+ " update and get " + URL;
    }
 }

输出

  

System.NullReferenceException:未将对象引用设置为对象的实例。      在Custom.Workflow.Activities.AddListItemPermissionAssigment.Execute(ActivityExecutionContext executionContext)

1 个答案:

答案 0 :(得分:1)

从SharePoint的角度来看,这不是实际列表项的正确URL。它只是某个页面的URL,恰好显示该项目,这是不同的。

您将需要解析该URL,从中提取所需的信息(即列表和项ID),然后使用该信息查找该项:

var queryStrings = HttpUtility.ParseQueryString(url);
var listGuid = Guid.Parse(queryStrings["ListId"]);
var itemId = int.Parse(queryStrings["ID"]);

var item = web.Lists[listGuid].GetItemById(itemId);

如果您对实际商品网址的内容感到好奇,请打印item.URL属性以查看该商品的实际内容。这就是您的URL需要包含的代码才能实际运行。