【发布时间】:2019-06-10 16:40:06
【问题描述】:
我正在尝试使用从共享文件夹和所有子文件夹的搜索中获得的文件名填充 ddl。
一切正常,但 .Name 返回空白。
public JsonResult GetFiles(string MCodeID)
{
if (MCodeID == null)
{
throw new ArgumentNullException(nameof(MCodeID));
}
List<Files> filelist = new List<Files>();
//Searching Files in //192.168.1.191
string path = @"\\192.168.1.191\Materials Project\";
string searchPattern = MCodeID + "*";
//string[] files = Directory.GetFiles(path, searchPattern, SearchOption.AllDirectories);
DirectoryInfo fi = new DirectoryInfo(path);
int FCodeID = 0;
foreach (var file in fi.GetFiles(searchPattern, SearchOption.AllDirectories))
{
filelist.Add(new Files
{
FCodeID = FCodeID,
FDescr = fi.Name
});
FCodeID += 1;
}
filelist.Insert(0, new Files { FCodeID = 0, FDescr = "--Select File--" });
return Json(new SelectList(filelist, "FCodeID", "FDescr"));
}
文件列表有 2 组值,但两组中的 FDescr 都是空白的。
我将不胜感激,
提前致谢。
【问题讨论】:
-
请注意
fi是一个DirectoryInfo对象。出于某种原因,当路径是以反斜杠结尾的 UNC 路径时,Name返回一个空字符串,并且(乍一看)在此处比较 .NET Core 和 .NET Framework 时,行为似乎也有所不同。我不会深入研究代码来找出原因,因为您可能想要那里的文件名,而不是目录名。 -
澄清我之前的评论,而不是
FDescr = fi.Name,您可能打算使用FDescr = file.Name -
谢谢@Stijn,就是这样。我对 .NET Core 和 .NET Framework 非常陌生,我会发现这一点。