2011-06-09 31 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