zoukankan      html  css  js  c++  java
  • 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>
    }

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

    只是下载单个的文件:

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

    --End--

  • 相关阅读:
    管理中的“变”与“不变”
    软件项目需求分析与管理的十大疑问
    小商家也要有O2O思维
    互联网时代CIO生存法则
    浅谈项目经理与部门经理之间的关系
    沃尔玛:“最后一公里”的致命伤
    大数据分析案例:永远别忘记天气这个变量
    IT项目中的6类知识转移
    C
    linu入门
  • 原文地址:https://www.cnblogs.com/ibgo/p/3655208.html
Copyright © 2011-2022 走看看