很多時候我碰到的在我的項目視圖拋出一個空引用異常的情況。MVC3瀏覽次數:處理空模型與技巧
@model Johnny.Application.TestModel
<div>@(Model.SomeText)</div>
這將引發一個錯誤,如果型號是空。
但如何處理的人呢?我當然看不到任何地方的代碼示例,在視圖中丟棄代碼的醜陋空檢查。這使我相信大多數時候,控制器不應該返回空模型。但是你怎麼能用更多的技巧來強制執行呢?
現在只要有人不小心導致控制器返回一個空模型,視圖模型吹起來,看起來是有過錯的。實際上,這是控制器的錯。而且這個觀點甚至不能「捕捉」問題,只有模型的成員恰好被使用(當然這是大多數情況下)纔會這樣做。
由於種種原因,有些觀點可能需要處理空值。不過,我不希望這是多數情況。顯然這是在視圖和控制器之間設置一些「契約」的問題。
我不喜歡我見過的選項:
- 檢查模式爲null每它的使用時間。 非常跛腳!
- 一個大if語句包裝用空模型 檢查整個視圖。想想浪費的代碼房地產。瘸!
- 添加如果檢查在頂部投擲。不錯,但看起來很傻。輕度跛腳。
我很想知道,如果像這些選項存在設置了「不空」的合同:
- 像[NoNullModels]控制器方法的屬性。我懷疑這是否存在,因爲我不認爲控制器知道它所連接的視圖。
- 在視圖中,像@ MVC3.HeyDontAllowNulls的指標或拋出異常(如上面的選項3)的其他一些標準的方式
爲什麼你甚至會返回一個空模型? – 2012-03-01 15:18:55
您是否嘗試過'@ Html.DisplayFor(m => m.SomeText)' – 2012-03-01 15:20:45
在代碼示例主題上,Internet上99%的代碼示例沒有異常處理和輸入驗證。部分原因是懶惰,部分原因是它會混淆代碼示例說明的觀點。 – 2012-03-01 15:36:16