2010-07-01 40 views
0

我對Silverlight和RIA相當陌生。但是,我們正在開發一個使用WCF/RIA連接到我們的服務層的SL前端應用程序。我們正在使用mvvm模式,以便也可以使用這種模式。如何將業務層異常轉換爲SL4中的驗證錯誤?

我有一個特定的數據表單,我使用命令掛鉤數據表單的EditEnding事件。在EditEnding中,我打電話給我的服務來保存編輯的對象。該服務對該對象執行一些繁重的驗證,並且當前拋出異常,這些異常在我的視圖模型中陷入並用MessageBox顯示。

我想顯示這些異常作爲驗證錯誤,而不是顯示它們與messagebox。我見過一些關於SL4新INotifyDataErrorInfo的文章,也許這是一個解決方案;但我對於如何實際執行有些困惑。另一件事是,我得到的印象是INotifyDataErrorInfo被用來引起「即時」屬性驗證(一次一個屬性),而不是允許用戶在按下提交按鈕時驗證服務層中的整個對象。

由於我們的用戶和他們的高延遲問題,我的一個要求是該應用程序不要太瑣碎。所以,我不希望客戶端對數據表單中正在編輯的每個屬性的服務進行調用。

任何人都可以闡明我如何能做到這一點?

在此先感謝!

回答

0

沒有看到您的更多視圖模型命令是如何與你的業務對象,以及如何你要顯示的錯誤,然後這是我的建議交互...

如果你想在視圖中顯示良好形成一系列的錯誤當您從命令execute方法捕獲驗證錯誤時,將它們添加到您可以綁定到視圖的可觀察集合中。這可能只是一個綁定到集合的列表框,並且當您下次嘗試保存時可以清除集合。

對於INotifyDataErrorInfo,它確實用於簡單的驗證和快速響應,因爲每次綁定屬性更改時都會由UI調用,因此不適合通過網絡調用服務。

HTH當你想

+0

感謝您的回覆。有沒有辦法將這些異常添加到已經在數據表中顯示的驗證錯誤...驗證錯誤列表中? – RHarris 2010-07-01 12:50:46

0

與INotifyDataerrors錯誤顯示在屏幕上。這是您的Vie Model一旦提出通知接口發現新錯誤的事件。

不幸的是,Rias服務爲你實現INotifyDataErrors,它們只使用來自數據註釋的錯誤。因此,如果您想使用Ria服務,則需要編寫自定義數據註釋以評估所有錯誤。在課堂上還有數據註釋。您可以使用數據註釋來驗證anyrthing。此外,如果您沒有給這個數據註釋一個.share.cs擴展名,它們將只在服務器端使用,而不在客戶端上使用。 欲瞭解更多信息,請閱讀數據註釋系列文章我的博客here。 如果你想使用異常請使用我的驗證工具包的WPF和Silverlight,而不是Ria服務。它可以在codeplex here上免費獲得。

相關問題