Как мне получить SPListItem из абсолютного URL?
У меня проблемы, когда я пытаюсь использовать 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 executeContext)
1 ответ
Это не правильный URL фактического элемента списка, с точки зрения SharePoint. Это просто URL какой-то страницы, которая отображает этот элемент, который отличается.
Вам нужно будет проанализировать этот URL-адрес, извлечь из него необходимую информацию (а именно список и идентификатор элемента), а затем использовать эту информацию для поиска элемента:
var queryStrings = HttpUtility.ParseQueryString(url);
var listGuid = Guid.Parse(queryStrings["ListId"]);
var itemId = int.Parse(queryStrings["ID"]);
var item = web.Lists[listGuid].GetItemById(itemId);
Если вам интересно, каков фактический URL элемента, распечатайте item.URL
свойство, чтобы увидеть, что это на самом деле для этого элемента. Вот что должен содержать ваш URL, чтобы ваш код действительно работал.