2011-03-22 74 views
0

我需要能夠驗證一些控件,我不知道如何做到這一點的最佳方式。一些驗證應該像驗證某些屬性的字符串長度一樣。這似乎很容易。Silverlight 4條件驗證

我需要能夠檢查必填字段,但是這個應用程序應該允許部分保存,所以我需要能夠檢查某些條件(例如屏幕上的複選框),並且如果滿足該條件,然後驗證需要,但如果複選框未選中,則允許保存。

我已經通過一個自定義驗證器實現了這一點,一切工作正常的客戶端,但一旦我嘗試保存,驗證檢查在服務器端,它會引發異常。

我在RIA元數據上使用EF w/data annotations來爲驗證器標記屬性。

如果任何人都可以指出我在正確的方向上如何做到這一點,我將不勝感激。

+0

拋出了什麼樣的異常,它是否是正確的行爲?我知道如何使用INotifyDataErrorInfo接口,對我來說這是一個更好的驗證方法。 – vorrtex 2011-03-22 22:21:05

+0

取消實體模型的註釋。無論如何,我不會把它們放在那裏。我在我的顯示/輸入模型上添加了註釋。 – 2011-03-29 13:27:25

回答

0

如果你在viewmodel中對屬性setter進行驗證,那麼你可以有條件地拋出異常,如果你的xaml綁定了w/ValidatesOnExceptions = True,你應該得到你想要的行爲。

0

它在客戶端實現了CustomValidation的接縫。

你應該在「.shared.cs」文件創建服務器端CustomValidation類,使customvalidation是在服務器和客戶端都可用。 RIA將把這個驗證器複製到客戶端。

一定要在你的模型類(也許是屬性?)上有一個屬性,並將你的checkBox綁定到這個屬性。服務器將知道將使用哪種驗證。

最後在服務器端的RIA元數據類上使用您的定製驗證!再次,RIA將把這個驗證複製到客戶端。