我正在创建一个MVC页面,它将扫描文件夹及其子文件以查找所有pdf文件并显示它们。允许用户单击链接并打开文档。
我有以下List格式的路径列表。
Docs\\Work\\Test\\TestFile0.pdf
Docs\\Work\\Test\\TEstFile1.pdf
Docs\\Work\\Job\\JobFile0.pdf
Docs\\Work\\Job\\JobFile1.pdf
Docs\\School\\English\\Eng0.pdf
Docs\\School\\English\\Eng1.pdf
Docs\\School\\German\\Ger0.pdf
Docs\\School\\German\\Ger0.pdf
Docs\\Games\\Game0.pdf
Docs\\Games\\Game1.pdf
Docs\\Games\\Game2.pdf
我想创建一个可以发送到我的View的树形结构。这是我目前的模特
public class FolderModel
{
public string Name { get; set; }
public List<FolderModel> ChildFolders { get; set; }
public List<FileModel> ChildFiles { get; set; }
public FolderModel()
{
ChildFolders = new List<FolderModel>();
ChildFiles = new List<FileModel>();
}
}
public class FileModel
{
public string Name { get; set; }
public string Path { get; set; }
}
我尝试了很多不同的方法,但我似乎无法让它正常工作。我目前的方法是取每个字符串,拆分它 进入字符串列表并使用递归来创建文件夹及其子项。
private FolderModel Create(List<string> path, FolderModel model, string origPath)
{
if (!path.Any())
{
return model;
}
var firstItem = path.First();
if (firstItem.Contains("."))
{
//its a file
var file = new FileModel()
{
Name = firstItem,
Path = origPath
};
model.ChildFiles.Add(file);
path.RemoveAt(0);
model = Create(path, model, origPath);
return model;
}
else
{
//its a folder
var folder = new FolderModel()
{
Name = firstItem
};
if (!model.ChildFolders.Contains(folder))
{
model.ChildFolders.Add(folder);
}
path.RemoveAt(0);
model = Create(path, folder, origPath);
return model;
}
}
然而,我似乎无法让它正常工作并尝试了很多不同的方法。任何人都可以伸出援助之手或指出一些可以帮助我的事情。