ASP.NET MVC 下载列表

在ASP.NET WebForm里要想网站某个文件夹的文件列出来供用户下载似乎很简单,WebForm帮你做了很多事,只需要在Html文件里写:

<a href="~/download/">下载列表</a>

即可在点击链接后打开下载目录(download是个文件夹,里面放着一些文件。)。

而在MVC里这样写是不行的,因为MVC不是用文件夹目录的方式来访问,而是采用路由的方式。所以,就算超链接指向了正确的路径也会提示找不到文件。

在MVC里应该怎样做呢?

一、可以不用改动Controller,只在View里写一个循环访问文件夹的方法即可(UploadModel是站点根目录下的Content文件夹下的一个文件夹)。

<h4>下载模板</h4>

<table class="table">

<tr>

 <th>文件名</th>

 <th>下载</th>

</tr>

@{

  foreach (string fullFilePath in Directory.GetFiles(Server.MapPath("~/Content/UploadModel")))

  {

    <tr>

       <td><a href="@Href("~/Content/UploadModel", Path.GetFileName(fullFilePath))">@Path.GetFileName(fullFilePath)</a></td>

       <td><a href="@Href("~/Content/UploadModel", Path.GetFileName(fullFilePath))">下载</a></td>

    </tr>

   }

}

</table>

二、或者在Controller和View里都改动下:

Controller

public ActionResult Upload()

{        

  var files = Directory.EnumerateFiles(Server.MapPath("~/Content/UploadModel"));    

  return View(files);

}

View

@foreach (var fullPath in Model)    

{

  var fileName = Path.GetFileName(fullPath);    
  <tr>     <td><a href="@Href("~/Content/UploadModel", fileName)">@fileName</a></td>
  </tr>
}

这样都可以得到一个下载文件的列表。

ASP.NET MVC 下载列表

只是下载单个的文件:

<a href="@Href("~/Content/myfile.zip")">下载</a>

 

--End--

你可能感兴趣的:(asp.net)