我对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");
会使网页转到空白页面。所以我的问题是......我怎样才能优雅地处理这种情况? - 理想情况下向用户显示某些错误或者没有文件/数据或者如果不可能,那么只需确保页面不会转到空白页面,并保持原样。
我想我可以重定向到索引操作,但这会刷新页面 - 有没有其他选择。
答案 0 :(得分:1)
我会做两件事之一:
返回404 Not Found
回复:
return HttpNotFound();
渲染一个友好的&#34;错误页面:
try
{
if (File.Exists(...))
{
// Download file
}
else
{
return View("FileNotFound");
}
}
catch (Exception ex)
{
return View("FileError", ex);
}