2011-06-09 49 views
0

我正在使用Silverlight 4與RIA服務。我使用EDMX在Web應用程序上創建了域服務。對於一個實體表我有所謂的單價,並在元數據標註的小數領域如下:RIA服務十進制必填字段不會導致驗證錯誤

[Required(ErrorMessage="Price is required.",AllowEmptyStrings = false)] 
[Range(typeof(decimal), "1", "1000", 
     ErrorMessage = "Price must be between {1} and {2}")] 
public decimal UnitPrice { get; set; } 

在我的客戶我有一個頁面插入新記錄和字段綁定如下:

<TextBox Grid.Column="1" Grid.Row="4" Name="txtPrice" 
      Text="{Binding Path=UnitPrice, Mode=TwoWay, NotifyOnValidationError=true, 
      ValidatesOnExceptions=True, ValidatesOnDataErrors=True, 
      TargetNullValue='Price', StringFormat=\{0:c\}}" /> 

在頁面上的保存按鈕我有以下幾點:

if (newItem.HasValidationErrors) 
{ 
    MessageBox.Show("please fix errors"); 
} 
else 
{ 
    try 
    { 
     db.SubmitChanges(); 
     EditWindow.Close(); 
    } 
    catch (Exception ex) 
    { 

    } 
} 

當我去添加一個新的記錄,如果我爲單價的東西超出範圍如輸入值-1 0我得到適當的驗證消息,並且域上下文不嘗試更新數據庫。

我的問題是,如果我不爲單價輸入任何值沒有出現驗證和數據上下文嘗試更新數據庫,並導致unhanded異常錯誤

有人建議的方式來引起確認消息使其與Range驗證一樣出現,還是需要手動檢查UnitPrice字段是否正確,並在出現錯誤時顯示消息框?

感謝

馬克

回答

0

我覺得這個問題有與結合TargetNullValue='Price'的這個屬性做。這指定如果源爲空,則使用值'Price'。嘗試刪除它,看看是否可以解決問題。

希望這會有所幫助:)

+0

謝謝,但我已經嘗試過了。即使它留空也會導致問題 – 2011-06-10 08:57:29