我正在开发一个与SharePoint 2010连接的应用程序,其中一个SP对象(SPFolder.Subfolders[index]
如果你很好奇)需要一个字符串来索引它返回的项目。问题是我需要传递一个字符串变量,但它只接受文字。有没有办法将变量转换为文字用于此目的?如果问题不够清楚,请参见下图:
SPFolder folder = rootFolder.SubFolders["Literal folder name"]; // This properly searches the collection (which has already been defined) and returns the folder with the name specified by the literal.
string newFolder = "Literal folder name"; // In this case I'm trying to pass this string as the index.
SPFolder folder = rootFolder.SubFolders[newFolder]; // This is where it throws a "Value does not fall within the expected range" exception when the string is referenced.
如果上下文有帮助,应用程序将获取一组文件夹名称并在库中的特定级别创建它们,然后循环遍历新文件夹以在其中构建复杂的文件夹结构。为此,我必须创建一个文件夹,获取其URL,然后根据该URL创建其余文件夹。获取新创建的文件夹是我遇到麻烦的地方,因为使用我刚用来创建它的字符串索引父文件夹就是它生气的地方。
答案 0 :(得分:2)
这些是相同的:
SPFolder folder = rootFolder.SubFolders["Literal folder name"];
string folderName = "Literal folder name";
SPFolder folder = rootFolder.SubFolders[folderName];
在您的示例中,字符串具有不同的值,这将导致不同的结果。
答案 1 :(得分:1)
来自文档的示例显示了通过整数索引进行访问,您可以在其中检查名称。不是最优雅,但会起作用
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfoldercollection(v=office.14).aspx
答案 2 :(得分:0)
您是否尝试过使用逐字字符串文字?
var testString = @"This is a verbatim string literal";
MSDN也很好地解释了字符串文字和逐字字符串文字之间的差异。