代码之家  ›  专栏  ›  技术社区  ›  Unbreakable

如何在ASP.Net MVC 4项目中创建视图以显示文件列表

  •  1
  • Unbreakable  · 技术社区  · 11 年前

    我正在学习ASP.Net MVC 4编程。目前,我想在网页上显示文件列表。以下是我到现在为止所做的。

    在 HomeController.cs 我编辑了 Contact 操作如下:

    public ActionResult Contact()
    {
         ViewBag.Message = "Your file page.";
         DirectoryInfo dirInfo = new DirectoryInfo(@"c:\");
         List<string> filenames=dirInfo.GetFiles().Select(i=>i.Name).ToList();
         ViewBag.data = filenames; 
         ///^^ Is this correct??    
    
         return View();
    }
    

    我希望文件名显示在网页上。我应该在我的观点中写些什么?我右键单击 联系 操作并获得默认视图,其中包含:

    @{
        ViewBag.Title = "Contact";
    }
    
    <h2>Contact</h2>
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   Andrei V    11 年前

    正如@ChrisV所写,您可能需要创建一个强类型视图。这意味着要将模型与视图关联。然后使用 View() 以Model为参数的重载。在当前版本中,您使用 ViewBag 。这没有错,但创建一个强类型视图可能是最好的,至少在学习过程中是这样。

    话虽如此,我可能会做以下更改:

    在控制器中,获取 FileInfo 对象,而不是 文件名 这个 文件信息 类型公开了可用于丰富显示数据的其他功能。

    public ActionResult Contact()
    {
        ViewBag.Message = "Your file page.";
        DirectoryInfo dirInfo = new DirectoryInfo(@"c:\");
        List<FileInfo> files = dirInfo.GetFiles().ToList();
    
        //pass the data trough the "View" method
        return View(files);
    }
    

    接下来,需要在视图中指定模型类型,并迭代和显示数据:

    @model IEnumerable<FileInfo>
    
    @{
         ViewBag.Title = "Contact";
    }
    
    <h2>Contact</h2>
    
    <ul>
    @foreach (FileInfo file in Model)
    {
         <li>@file.Name</li>
    }
    </ul>
    

    请注意,您在页面上实际显示的内容和方式取决于您。您可以为文件创建一个表,并显示创建时间、大小甚至命令(下载、删除等)。这只是一个“模板”;这样使用它。

        2
  •  1
  •   ChrisV    11 年前

    您在页面上显示的主要内容(即视图“用于”的内容)应该是模型。查找 @model 指令。应该在这里 @model List<string> 。然后代替设置 ViewBag.data 使用 return View(filenames); 。在您的视图中,您将能够访问强类型模型。如果您对我刚才所说的内容有什么不理解的地方,那么您需要阅读更多关于ASP.NET MVC中视图模型的角色的信息。