C# 将列表传递到目录
我目前正在一个网站上工作,该网站正在asp.net和c中开发。我现在面临一个小问题。我使用下面的代码从数据库返回一个文件位置列表C# 将列表传递到目录,c#,asp.net,C#,Asp.net,我目前正在一个网站上工作,该网站正在asp.net和c中开发。我现在面临一个小问题。我使用下面的代码从数据库返回一个文件位置列表 public List<FileDetails> GetFiles() { string userName = HttpContext.Current.User.Identity.Name; string sqlQuery = @"SELECT FileName, File
public List<FileDetails> GetFiles()
{
string userName = HttpContext.Current.User.Identity.Name;
string sqlQuery = @"SELECT FileName,
FileLocation
FROM File
WHERE UserName=@UserName";
List<FileDetails> FileDetailsList = new List<FileDetails>();
using (SqlConnection connection = new SqlConnection(Common.ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(sqlQuery))
{
cmd.Parameters.AddWithValue("UserName", userName);
cmd.Connection = connection;
connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
FileDetails f = new FileDetails();
f.FileName = reader["FileName"].ToString();
f.FileLocation = reader["FileLocation"].ToString();
FileDetailsList.Add(f);
}
}
}
}
return FileDetailsList;
}
现在我需要将它们显示到另一个页面上的gridview。我使用以下代码来实现这一点
FileDetails info = new FileDetails();
if (info.GetFiles() != null)
{
List<string> filePaths = Directory.GetFiles(info.FileLocation).ToList(); //Error is at this line
List<FileDetails> files = new List<FileDetails>();
foreach (string filePath in filePaths)
{
string filename = Path.GetFileName(filePath);
files.Add(new FileDetails()
{
FileName = filename,
FileLocation = filePath
});
}
GridView1.DataSource = info.GetFiles();
GridView1.DataBind();
}
问题是我一直得到一个错误System.ArgumentNullException:值不能为null。
参数名称:路径有人知道我哪里出错了吗
如果我这样做的话。GetFiles@C:\Test\Files.ToList;它工作得非常好。但是客户端的要求是从数据库中获取文件位置路径
提前感谢您的帮助假设:
信息是一个类。
info.GetFiles返回数据库中的记录列表。代码在顶部
info.FileLocation在哪一点设置
当然:
var filelist = info.GetFiles();
foreach(var f in filelist)
{
List<string> filePaths = Directory.GetFiles(f.FileLocation).ToList();
...
}
您正在尝试从info.GetFilelocation获取filelocation,并且您已经创建了FileDetails的新对象,因此现在将有与此对象关联的值,因此所有值都将为空。因此,您需要为此对象分配一些值,以便访问filelocation。可能是这样的情况
FileDetails info = new FileDetails();
List<FileDetails> list=info.GetFiles();
及
List<string> filePaths = Directory.GetFiles(list[0].FileLocation).ToList();
类似地,您可以循环浏览列表
foreach(FileDetails f in list)
List<string> filePaths = Directory.GetFiles(f.FileLocation).ToList();
GetFiles方法可能应该是静态的。这样就不需要创建FileDetails对象来调用它。但问题是,您没有从中捕获返回的列表,而且它也没有改变调用它的FileDetails对象。此外,如果您想在另一页上使用它,您应该将它保存在持久的位置。@juharr谢谢您的建议,这非常有用appreciated@PatrickHofman谢谢你的建议,非常感谢你的回答