2009-10-14 3 views
2

Если я знаю URL-адрес документа, могу ли я найти URL-адрес для библиотеки документов sharepoint, в которой присутствует документ. Ниже приведены два примера URL-адресов для сайта SharePoint. Первый документ присутствует в корне библиотеки документов. Второй документ присутствует в папке «folder1» в библиотеке документов. Оцените, если в любом случае вы узнаете URL-адрес библиотеки документов (http: ///sites/site1/DocLib/Forms/AllItems.aspx).Узнайте URL-адрес библиотеки документов документа SharePoint

HTTP: ///sites/site1/DocLib/a.doc HTTP: ///sites/site1/DocLib/folder1/a.doc


Спасибо за ваши ответы. Я ищу решение с веб-службой MOSS OOTB или на основе шаблона URL. Можем ли мы использовать любой из них, чтобы добиться этого?

Спасибо.

+0

Привет, Спасибо за ваши ответы. Я ищу решение с веб-службой MOSS OOTB или на основе шаблона URL. Можем ли мы использовать любой из них, чтобы добиться этого? Спасибо. – 2009-10-15 00:53:52

ответ

0

Есть два разных способа, которыми я это делаю, в зависимости от ситуации. Ни один из них не работает очень хорошо (важно отметить), хотя второе решение обычно довольно хорошо работает для наших случаев использования.

Первый чрезвычайно прост:

private SPList GetListForFile(string fileUrl) 
{ 
    using (SPSite site = new SPSite(fileUrl)) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
      SPFile file = web.GetFile(fileUrl); 
      if (file.Exists) 
      { 
       return file.Item.ParentList; 
      } 
     } 
    } 
    return null; 
} 

Второй является немного более сложным. Это требует, чтобы вы сначала отрубили файловую часть URL-адреса, а затем передали его методу, чтобы получить правильный SPWeb, а затем найти правильный список в Интернете.

private SPList GetListForFile(string fileUrl) 
{ 
    using(SPWeb web = OpenWeb(GetFolderUrl(fileUrl))) 
    { 
     string listName = fileUrl.Replace(web.ServerRelativeUrl, ""); 
     listName = listName.Substring(0, listName.IndexOf('/')); 
     return web.Lists[listName]; 
    } 
} 

private string GetFolderUrl(string fileUrl) 
{ 
    return Regex.Replace(fileUrl, @"/[^/]+?\.[A-Z0-9_]{1,6}$", "", 
     RegexOptions.IgnoreCase | RegexOptions.Singleline); 
} 

private SPWeb OpenWeb(string folderUrl) 
{ 
    SPWeb web = null; 
    while(web == null) 
    { 
     web = Site.OpenWeb(folderUrl); 
     if (!web.Exists) 
     { 
      web.Dispose(); 
      web = null; 
     } 
     folderUrl = folderUrl.Substring(0, folderUrl.LastIndexOf("/")); 
     if (folderUrl.Length == 0) 
     { 
      folderUrl = "/"; 
     } 
    } 
    return web; 
} 
1

Объект SPWeb имеет метод GetFile, который принимает полный файл url.

SPFile file = web.GetFile(yoururl); 

теперь легко добраться до URL-SPList в, используя следующее:

string listUrl = file.Item.ParentList.DefaultViewUrl; 

так, в методе вместе:

public string GetListUrlFromFileUrl(string fullFileUrl) 
{ 
    using (SPSite site = new SPSite(fullFileUrl)) 
    { 
    using(SPWeb myWeb = site.OpenWeb()) 
    { 
     SPFile file = web.GetFile(fullFileUrl); 
     return file.Item.ParentList.DefaultViewUrl; 
    } 
    } 
} 
Смежные вопросы