C# 将文件集合返回到新页面

C# 将文件集合返回到新页面,c#,asp.net-mvc,C#,Asp.net Mvc,我想建立网站,将显示所有文件从根目录,所以打开ASP.NET网络应用程序项目 在这个文件夹中,我有几个文件夹,点击每个文件夹的名称(我有每个文件夹的按钮)将引导我进入这个文件夹中所有文件的新页面。 因此,我添加了名为folder1的新控制器: public class WebMailController : Controller { private List<string> list = new List<string>(); // // GET

我想建立网站,将显示所有文件从根目录,所以打开ASP.NET网络应用程序项目

在这个文件夹中,我有几个文件夹,点击每个文件夹的名称(我有每个文件夹的按钮)将引导我进入这个文件夹中所有文件的新页面。 因此,我添加了名为folder1的新控制器:

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
    }