2010-12-20 43 views
0

我們有一個業務案例需要從服務器端返回驗證錯誤和警告,並在silverlight上顯示。 我看到silverlight正在使用System.ComponentModel.DataAnnotations.ValidationResult來處理錯誤。它不包含和「警告」字段。如何將警告從服務器端返回到silverlight

我想知道是否有人有一個好主意來處理這個問題。謝謝。

回答

0

我認爲ValidationResult是由ValidationAttribute的子類引發的ValidationException使用的。通常這種機制與阻塞驗證錯誤一起使用,因爲拋出異常會停止代碼的執行。如果它發生在您的服務中,則可以將異常發送給客戶端並進行處理,但這並不總是想要的方案。

你可以擴展這個模型(這些類的ValidationAttribute,它的子類,ValidationException不是密封的)來添加一個警告標誌,但是你必須捕獲異常以繼續處理並在出現警告的情況下重新拋出。

另一種替代方法是將業務邏輯驗證錯誤和警告添加到您對客戶端的響應中。我喜歡這種方法,因爲您可以隨心所欲地包含任何想要的信息。

+0

謝謝。目前我的解決方案是從服務器接收任何錯誤並將其添加到context.ValidationResults中,以便ValidationSumarry可以將其選中並顯示。但是,ValidationResults僅用於錯誤,並沒有警告的空間......你認爲我應該繼承MS'課程並添加我的領域?這是一個好的解決方案嗎?還是有更好的。由於某些技術原因,我無法返回驗證錯誤... – Frank 2010-12-20 16:50:19

+0

驗證結果很遺憾。如果您沒有同時顯示錯誤和警告,則可以在ViewModel上設置一個標誌,以指示您是否有錯誤或警告,並相應地設置ValidationSummary的樣式。我會尋找更好的解決方案,如果我找到了某些東西,請回復。 – sowee15 2010-12-20 17:42:23

+0

查看關於INotifyDataErrorInfo(http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx)文檔的註釋,因爲我認爲這是一個很好的起點在您的ViewModel上自定義錯誤。但是,在這種情況下,您可以在ViewModel上實現接口來通知ui新錯誤可用,而不是將錯誤添加到ValidationContext。 – sowee15 2010-12-20 18:51:41

相關問題