我正在使用带有RIA服务的Silverlight 4。我使用EDMX在Web应用程序上创建了域服务。对于一个Entity表,我有一个名为UnitPrice的十进制字段,并在元数据中注释如下:
[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)
{
}
}
当我去添加新记录时,如果我输入单价的值作为超出范围的内容(例如-10),我会得到正确的验证消息,并且域上下文不会尝试更新数据库。 / p>
我的问题是,如果我没有为Unitprice输入任何值,则不会出现验证,数据上下文会尝试更新数据库并导致无法处理的异常错误
有人可以建议一种方法来使验证消息与Range验证一样出现,还是我需要手动检查UnitPrice字段是否正确并在出现错误时显示消息框?
由于
标记
答案 0 :(得分:0)
我认为这个问题与绑定TargetNullValue='Price'
的这个属性有关。这指定如果源为null,则使用值“Price”。尝试删除它,看看是否能解决问题。
希望这会有所帮助:)