在MVC3 Controller操作中返回文件和呈现的视图

Ale*_*aro 5 download asp.net-mvc-3

是否可以返回文件以供下载并从控制器方法调用更新视图?

或者需要解决方法,也许使用javascript(加载后调用页面刷新)?

文件下载是在ViewModel中设置的参数(从页面上的各种控件中搜索参数)中动态创建的.

Meh*_*hin 7

您可以使用操作中的ViewModel或ViewData返回文件的地址,并使用window.location.href视图末尾的以下代码中所示.

调节器

public ActionResult Index()
{
    /* ... */

    ViewBag.FileName = "{FileName}";
    return View();
}

public ActionResult Download(string id) {
    /* ... */

    return File("{Path}", "{MIME type}", "{Desired file name}");
}
Run Code Online (Sandbox Code Playgroud)

标记

<script type="text/javascript">

    window.location.href = "/home/download/" + "@Ajax.JavaScriptStringEncode(@ViewBag.FileName)";

</script>
Run Code Online (Sandbox Code Playgroud)

  • @AlessandroLendaro `FileResult` 有一个重载,可以获取流而不是路径。此外,您可以通过查询字符串或路由参数将值从客户端发送到服务器。 (2认同)