2012-03-22 116 views
4

我有一些條件驗證標準的'RequiredIf'屬性。
我的表單和模型相當大,該模型有63個屬性,其中大部分都經過驗證。MVC3懶惰模型綁定/加載

無論如何,我有一個問題,我的模型正在加載我的驗證正在執行。
如果我在'RequiredIf''IsValid'方法的第一行代碼中放置了一個斷點,我可以看到我的模型有很多空值。當我按F5(繼續驗證下一個屬性)時,仍然有很多空值。如果我按F5大約5次以上,模型會神奇地填滿我發佈的數據。

我的第一個5-6驗證因此被搞砸了。任何人都知道如何加載模型?我沒有使用自定義模型綁定。

+0

您是否急於加載所有的實體關係?還是這些屬性只是原始類型? – 2012-03-23 16:38:43

+0

這些都是原始類型。加載的大多數是字符串。 – Peanut 2012-03-23 18:05:55

回答

3

解決方案是完全「覆蓋」標準模型綁定。創建您自己的模型綁定器,手動加載整個模型,然後執行所有模型驗證。我仍然堅信的一些方法只是在這個標準Model Binder中說「嘿,在驗證之前加載整個模型」,但是現在我必須自己創建。

1

我會重新設計你的頁面和模型,並在幾個小模型中拆分數據模型和視圖,可能使用幾個部分視圖。 這樣你可以更好地管理你的模型。想象一下,爲該模型編寫測試。 63個屬性太多了,可能你需要解決這個問題,否則聽起來你以後會遇到問題。

+0

我並不反對這一點,但在項目階段重新設計別人的代碼不是一種選擇。 :( – Peanut 2012-03-23 18:05:16