跟进我之前的问题here,其中我回答了如何在文档库中创建文件夹的问题。我现在需要在列表中创建一个文件夹,但似乎webDav方法不起作用。
有没有人有使用网络服务或webdav在列表中创建文件夹的代码段?
由于
在以下代码中不会产生错误,但不会创建该文件夹:
private void createFolderUsingWebDav(string siteAddress, string listAddress, string folderName)
{
string folderAddress = siteAddress + @"/" + listAddress + @"/" + folderName;
HttpWebResponse response;
try
{
HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(folderAddress);
request.Credentials = wsLists.Credentials; // CredentialCache.DefaultCredentials;
request.Method = "MKCOL";
response = (System.Net.HttpWebResponse)request.GetResponse();
response.Close();
}
catch (WebException ex)
{
if (ex.Status != WebExceptionStatus.ProtocolError)
{
throw ex;
}
}
}
在进一步检查中,正在创建物理文件夹,我通过将驱动器映射到sharepoint然后导航到列表文件夹来检查这一点,但是文件夹在列表视图中不可见。我在列表中使用Web界面创建的文件夹也可以在视图中看到,但实际上我可以看到它们与使用web dav创建的文件夹之间没有区别
答案 0 :(得分:1)
找到有用的东西:
XmlDocument doc = new XmlDocument();
XmlElement batch = doc.CreateElement("Batch");
string item = "<Method ID=\"1\" Cmd=\"New\">" +
"<Field Name=\"ID\">New</Field>" +
"<Field Name=\"FSObjType\">1</Field>" +
"<Field Name=\"BaseName\">" + folderName + "</Field></Method>";
batch.SetAttribute("ListVersion", "1");
batch.InnerXml = item;
wsLists.UpdateListItems(listAddress, batch);