這是關於樣式和設計而不是語法的問題。MVC視圖中的過量空檢查
我有幾個(缺乏更好的術語)導航屬性的域模型。所以在我的強類型的詳細信息查看Foo
其中有Bar
類型的屬性我可以做到以下幾點:
<%: Foo.Bar.Name %>
但是,有時候酒吧是空的,所以我最終的東西,如:
<%: Foo.Bar == null ? String.Empty : Foo.Bar.Name %>
在其他情況下,因爲導航屬性I 的便利可能做更多的鏈接。但是,缺點是在View中引入了更多的空檢查。
作爲一種替代方案,我可以在ViewModel中執行所有的空檢查,以便將「乾淨」的東西傳遞給View。我正在尋找一些想法或常識指導原則,以避免在我的觀點中過度檢查空值。
P.S.我正在使用ASP.NET MVC,但我認爲這個問題可能與其他MVC框架有關。
這是一個好的做法嗎?如果否則我的純粹的域模型就足夠了,這是否會是唯一的理由使用ViewModel? – Larsenal 2010-09-16 23:54:34
@Larsenal雖然還有其他一些使用ViewModel的原因,但我使用ViewModel的一個很好的理由是讓代碼不受視圖影響。您發佈的場景恰好可以從中受益,但通過將代碼移動到視圖模型,您肯定會看到更多的場景,其中視圖的條件檢查可能更少。 – eglasius 2010-09-17 00:51:44
使用它的另一個原因是因爲它非常有效,簡單地減少了允許發佈到控制器的內容。此外,你可以把asp.net的一些屬性放在那裏,否則它會讓你的原始模型。儘管如此,在非常小的項目中,我通常會在使用模型和查看模型之間進行切換,因爲有時模型只適合賬單。 – eglasius 2010-09-17 00:53:15