C# 以编程方式更改SharePoint列表的URL

C# 以编程方式更改SharePoint列表的URL,c#,sharepoint,sharepoint-2013,C#,Sharepoint,Sharepoint 2013,我已在我的URL为的内容类型中以编程方式创建了一个库: /站点/test/_layouts/15/start.aspx/1235/Forms/AllItems.aspx 我想更新此URL并更改 12345 通过我的C#代码上的其他内容(我从其他地方获得的字符串值) 比如: /sites/test/_layouts/15/start.aspx/test/Forms/AllItems.aspx 我成功地轻松更改了库的标题,但没有更改URL SPList lst = web.Lists[oldVal]

我已在我的URL为的内容类型中以编程方式创建了一个库:

/站点/test/_layouts/15/start.aspx/1235/Forms/AllItems.aspx

我想更新此URL并更改

12345

通过我的C#代码上的其他内容(我从其他地方获得的字符串值)

比如:

/sites/test/_layouts/15/start.aspx/test/Forms/AllItems.aspx

我成功地轻松更改了库的标题,但没有更改URL

SPList lst = web.Lists[oldVal];
                        lst.Title = properties.AfterProperties["CorporateName"].ToString();
                        lst.Update();

我在Sharepoint Designer中搜索并阅读了许多方法,但我没有找到在Visual Studio上执行此操作的完美解决方案。

SPList对象没有受支持的移动到新URL的方法。但是每个列表都有一个相应的文件夹,该文件夹中确实有一个MoveTo()方法,该方法将更改关联列表的Url

SPWeb web = site.OpenWeb()
SPFolder folder = web.Folders["ListURL"];
folder.MoveTo("NewURL");
folder.Update();
这不一定受支持,但确实有效,我相信它使用的后端逻辑与SharePoint Designer解决方案相同


手动处理此问题的一个讨论较少但相关的方法是在通过WebDAV从资源管理器查看SharePoint网站时重命名列表文件夹

谢谢Arcan.NET在你的帮助下我解决了我的问题

SPList lst = web.Lists[properties.ListItem["Name"].ToString()];
SPFolder folder = web.Folders[lst.RootFolder.Url];
folder.MoveTo(properties.AfterProperties["Nickname"].ToString());


我试图在ItemUpdate方法中插入此代码,但我的库URL没有更改。你知道吗?
Add-PSSnapin Microsoft.SharePoint.PowerShell –erroraction SilentlyContinue

$libOriginalUrl = "/Lists/YourLibName1";
$libNewUrl = "/YourLibName2";
$web = Get-SPWeb -Identity http://....

$lib = $web.GetList($web.Url + $libOriginalUrl)
$rootFolder = $lib.RootFolder;
$rootFolder.MoveTo($web.Url + $libNewUrl)