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--

  • 相关阅读:
    IE8上传插件jquery-form.js上传请求参数设置type为post失效问题
    路径参数汉字兼容问题
    vue-cli2移动端适配
    事件委托原生、jQuery实现
    new Date()在移动端的问题
    create-react-app配置less
    删除左右两边空格
    日期转换
    Git 常用命令
    单页面应用
  • 原文地址:https://www.cnblogs.com/ibgo/p/3655208.html
Copyright © 2011-2022 走看看