MVC请求文件下载 - 如何处理没有可用的文件?

时间:2016-05-19 15:58:47

标签: c# asp.net-mvc

我对MVC比较新,但假设我的页面上有一个{page-id}/instant_articles?development_mode=true&html_source=<html lang="en" prefix="op: http://media.facebook.com/op#"><head><meta charset="utf-8"><link rel="canonical" href="http://{websites´s URL}/instantarticle.html"><link rel="stylesheet" title="default" href="#"><title>Instant Articles</title><meta property="fb:article_style" content="Test Article Style"></head><body><article><header><h1> Instant Articles </h1><h2>Get familiar with your new storytelling tools. Make your media come alive, and keep readers coming back for more</h2><h3 class="op-kicker">Introduction</h3><address>Instant Articles Team</address><time class="op-published" dateTime="2016-2-04T08:00">February 4th 2016, 8:00 AM</time><time class="op-modified" dateTime="2016-2-04T08:00">February 4th 2016, 8:00 AM</time></header><p>Yes, it’s true. Instant Articles open on mobile devices really quickly.</p></body></html> ,它链接到一个Action,它生成一个文件并使用以下命令返回:

@Html.ActionLink(....

这一切都很有效,直到出现某种问题 - 出现问题或者没有文件可以返回。

返回return File(memoryStream, "application/vnd.ms-excel"); 会使网页转到空白页面。所以我的问题是......我怎样才能优雅地处理这种情况? - 理想情况下向用户显示某些错误或者没有文件/数据或者如果不可能,那么只需确保页面不会转到空白页面,并保持原样。

我想我可以重定向到索引操作,但这会刷新页面 - 有没有其他选择。

1 个答案:

答案 0 :(得分:1)

我会做两件事之一:

  1. 返回404 Not Found回复:

    return HttpNotFound();
    
  2. 渲染一个友好的&#34;错误页面:

    try
    {
        if (File.Exists(...))
        {
            // Download file
        }
        else
        {
            return View("FileNotFound");
        }
    }
    catch (Exception ex)
    {
        return View("FileError", ex);
    }