2011-07-15 50 views
0

假設我們已經實現了我們的路線,支持網址,這樣MVC應用程序中不存在的內容 - 返回給訪問者/用戶的內容是什麼?

/content/5 
/news/10 

或者我們甚至使用蛞蝓。無論我們使用什麼內容標識符,用戶應該返回哪些不存在的內容?

例如,用戶請求/新聞/ 10,我們的控制器有這樣的代碼:

public virtual ActionResult Display(int id, string slug) 
    { 
    return View(_repository.Find(id)); 
    } 

上面很可能會導致異常時find()方法返回null。 我們有什麼選擇跳到那裏並嘗試解決這個問題?

  1. if..then檢查在控制器動作和直接用戶的一些默認頁面(也許如果這樣的列表,並查看存在的整體內容列表),
  2. 返回自定義(友好)500結果(實際上是將自定義HTTP錯誤處理,所以500將始終重定向到自定義友好頁面),
  3. 返回自定義(友好)404結果(類似於選項2,但表明內容不存在)?

我們可以將錯誤解釋爲內部應用程序錯誤或內容未找到錯誤。你認爲哪一個更好選擇?

管理頁面也一樣 - 在那裏做什麼?在這種情況下,我更傾向於實際將用戶重定向到儀表板或內容列表。

請分享你的想法

回答

2

我會創造像NewsNotFound一個觀點,如果你的倉庫返回null,return View("NewsNotFound", id);或類似的東西。

你也可以在那一點做一些日誌記錄。

對於一個完全無效的控制器/ URL,只是處理,作爲一個普通404

1

我們如何處理它是我們有三個獨立意見;兩個視圖由框架中的錯誤處理(404和500)處理。

的NoContent視圖是一個我們的HandleError之外創建(或具有該誤差在global.asax.cs處理,我們通常具有在一個IEnumerable<T>我們對空控制器或零項的檢查(視情況而定)和如果檢查結果爲真,我們​​

相關問題