如何创建视图以显示 ASP.Net MVC 4 项目中的文件列表
How to create view to display list of files in ASP.Net MVC 4 project
我正在学习 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();
}
我希望将文件名显示在网页上。我的看法应该写什么?我右键单击 Contact
操作并获得默认视图,其中包含:
@{
ViewBag.Title = "Contact";
}
<h2>Contact</h2>
您在页面上显示的主要内容(即视图是什么 "for")应该是模型。查找 @model
指令。这里应该是@model List<string>
。然后不设置 ViewBag.data
,而是使用 return View(filenames);
。在您看来,您将能够访问强类型模型。如果您对我刚才说的有什么不明白的,您需要阅读更多关于视图模型在 ASP.NET MVC 中的作用。
正如@ChrisV 所写,您可能想要创建一个强类型视图。这意味着您正在将一个模型与您的视图相关联。然后,您将使用 View()
重载传递数据,该重载将模型作为参数。在您当前的版本中,您使用 ViewBag
将数据发送到视图。这没有错,但最好创建一个强类型视图,至少在你学习的过程中是这样。
话虽如此,我可能会做以下更改:
在您的控制器中,获取 FileInfo
个对象的列表,而不是 文件名 。 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>
请注意,您在页面上实际显示的内容和方式取决于您。您可以为文件创建 table 并显示创建时间、大小甚至命令(下载、删除等)。这只是一个 "template";就这样使用它。
我正在学习 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();
}
我希望将文件名显示在网页上。我的看法应该写什么?我右键单击 Contact
操作并获得默认视图,其中包含:
@{
ViewBag.Title = "Contact";
}
<h2>Contact</h2>
您在页面上显示的主要内容(即视图是什么 "for")应该是模型。查找 @model
指令。这里应该是@model List<string>
。然后不设置 ViewBag.data
,而是使用 return View(filenames);
。在您看来,您将能够访问强类型模型。如果您对我刚才说的有什么不明白的,您需要阅读更多关于视图模型在 ASP.NET MVC 中的作用。
正如@ChrisV 所写,您可能想要创建一个强类型视图。这意味着您正在将一个模型与您的视图相关联。然后,您将使用 View()
重载传递数据,该重载将模型作为参数。在您当前的版本中,您使用 ViewBag
将数据发送到视图。这没有错,但最好创建一个强类型视图,至少在你学习的过程中是这样。
话虽如此,我可能会做以下更改:
在您的控制器中,获取 FileInfo
个对象的列表,而不是 文件名 。 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>
请注意,您在页面上实际显示的内容和方式取决于您。您可以为文件创建 table 并显示创建时间、大小甚至命令(下载、删除等)。这只是一个 "template";就这样使用它。