2013-01-06 22 views
2

在我的Silverlight RIA應用程序中,需要驗證小數屬性。我曾嘗試使用正則表達式和範圍註釋屬性在元數據中像下面:RIA服務驗證,如果無效,則不更新值

//[RegularExpression(@"^[1-9]\d*(\.\d+)?$", ErrorMessage = "Quantity has to be a positive numeric value")]  
[Range(typeof(decimal), "1", "1000", ErrorMessage = "Quantity must be between {1} and {2}")] 

當添加新的實體,既可以驗證數字小值,但如果我的關鍵在信中,既沒有標誌的任何錯誤,但不更新財產。例如,如果我先輸入2,然後更改爲「test」,則文本框上沒有錯誤消息。當保存實體時,屬性值仍然爲2.

這是預期的行爲嗎?如果是的話,我怎麼能使它標記任何沒有數字輸入作爲錯誤?

謝謝。

回答

0

我找到了原因。由於屬性類型是十進制的,因此當輸入文本時,它會拋出一個異常並且永遠達不到「Set」,所以驗證不會被觸發。在控件上設置「ValidatesOnExceptions = True」將顯示默認錯誤消息「無效格式」。

+1

但我仍然有這個問題。如果我在輸入框中輸入字母,即使異常出現錯誤消息,「保存」按鈕仍會啓用,因爲此時沒有驗證錯誤。如何捕獲此異常並添加驗證錯誤,以便保存按鈕可以被禁用? – julie6