C# 将文件集合返回到新页面
我想建立网站,将显示所有文件从根目录,所以打开ASP.NET网络应用程序项目 在这个文件夹中,我有几个文件夹,点击每个文件夹的名称(我有每个文件夹的按钮)将引导我进入这个文件夹中所有文件的新页面。 因此,我添加了名为folder1的新控制器:C# 将文件集合返回到新页面,c#,asp.net-mvc,C#,Asp.net Mvc,我想建立网站,将显示所有文件从根目录,所以打开ASP.NET网络应用程序项目 在这个文件夹中,我有几个文件夹,点击每个文件夹的名称(我有每个文件夹的按钮)将引导我进入这个文件夹中所有文件的新页面。 因此,我添加了名为folder1的新控制器: public class WebMailController : Controller { private List<string> list = new List<string>(); // // GET
public class WebMailController : Controller
{
private List<string> list = new List<string>();
//
// GET: /folder1/
public FileInfo Index()
{
FileInfo[] array = GetFiles();
foreach (FileInfo file in array)
return file;
return null;
}
private FileInfo[] GetFiles()
{
DirectoryInfo di = new DirectoryInfo(@"D:\folder");
FileInfo[] fileInfo = di.GetFiles("*.doc");
return fileInfo;
}
公共类WebMailController:Controller
{
私有列表=新列表();
//
//获取:/folder1/
公共文件信息索引()
{
FileInfo[]数组=GetFiles();
foreach(数组中的FileInfo文件)
返回文件;
返回null;
}
私有文件信息[]获取文件()
{
DirectoryInfo di=新的DirectoryInfo(@“D:\folder”);
FileInfo[]FileInfo=di.GetFiles(“*.doc”);
返回文件信息;
}
}
我的问题:
您看到第一个文件,因为您只返回第一个文件:
FileInfo[] array = GetFiles();
foreach (FileInfo file in array) return file;
因此,您得到第一个项目,并立即将其返回到视图
。相反,您应该返回文件列表
谈论第二个项目-使用PartialView
。
在这种情况下,控制器应返回PartialView
,而不是项目列表:
public ActionResult Files()
{
return PartialView("_Files", GetFiles());
}
视图应该类似于:
@Ajax.ActionLink("LoadFiles", "Files", "Home", new AjaxOptions {
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "files-div"
})
<div id="files-div">
@Html.Partial("_Files")
</div>
@Ajax.ActionLink(“加载文件”、“文件”、“主页”,新的AjaxOptions{
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“文件div”
})
@Html.Partial(“\u文件”)
很好,只看到第一个文件夹-返回类型是
FileInfo
,返回foreach
循环的第一次迭代。您希望返回一个IEnumerable
并使用生成返回文件在foreach
循环中使用code>(并抛出returnnull
)-但是当您可以返回GetFiles()的结果时,为什么还要麻烦呢
我可以举个例子吗?当然可以!更新答案。它是您家/任何视图的一部分。您还应该定义PArtialView
“\u文件”。我把它放在Index.cshtml中的{ViewBag.Title=“Home Page”}并获取一个错误:System.Web.Mvc.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理其他信息:未找到部分视图“\u文件”,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/Home/_Files.aspx~/Views/Home/_Files.ascx~/Views/Shared/_Files.aspx~/Views/Shared/_Files.ascx~/Views/Home/_Files.vbhtml~/Views/Shared/_Files.cshtml~/Views/Shared/_Files.vbhtmlHave是否添加了PartialView
“_文件”?
public IEnumerable<FileInfo> Index()
{
FileInfo[] array = GetFiles();
foreach (FileInfo file in array)
yield return file;
}
public ActionResult Index()
{
TempData[ "files" ] = GetFiles();
RedirectToAction( "Files" );
}
public ActionResult Files()
{
var fileInfos = TempData[ "files" ];
// do stuff with fileInfos
}