2016-05-19 20 views
1

我是比較新的MVC,但假設我有一個@Html.ActionLink(....我的網頁上鍊接到生成一個文件,並使用其返回的動作:MVC請求文件下載 - 如何處理沒有文件可用?

return File(memoryStream, "application/vnd.ms-excel"); 

這一切運作良好,直到有某種問題 - 或者出了問題或者沒有文件返回。

返回null使網頁變成空白頁。所以我的問題是......我如何優雅地處理這種情況? - 理想地向用戶顯示某些錯誤,表明出現了問題或者沒有可用的文件/數據,或者如果這不可行,那麼確保頁面不會進入空白頁面,並保持原樣。

我想我可以重定向到索引操作,但這會刷新頁面 - 有沒有其他的選擇。

+0

我假設你正在處理文件結果....你需要像在這個答案中添加一個條件:http://stackoverflow.com/questions/11434345/redirecting-to-mvc-actionresult-from-fileresult – Hackerman

+0

只有當文件存在時,你才能渲染動作鏈接? 'File.Exists(pathToFile)' –

+0

@NicholasV。不幸的是沒有數據庫生成的文件,我會做所有的頁面加載「文件處理」。 – Rick

回答

1

我會做兩件事情之一:

  1. 返回404 Not Found響應:

    return HttpNotFound(); 
    
  2. 渲染一個 「友好」 的錯誤頁面:

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