2

在我的 Silverlight RIA 应用程序中,需要验证十进制属性。我尝试使用 RegularExpression 和 Range 来注释元数据中的属性,如下所示:

//[RegularExpression(@"^[1-9]\d*(\.\d+)?$", ErrorMessage = "Quantity has to be a positive numeric value")]      
[Range(typeof(decimal), "1", "1000",  ErrorMessage = "Quantity must be between {1} and {2}")]

添加新实体时,两者都可以验证数字值,但如果我键入字母,两者都不会标记任何错误,但也不会更新属性。比如我先输入2,然后改成“test”,文本框上就没有错误信息了。保存实体时,属性值仍为 2。

这是预期的行为吗?如果是,我怎样才能将任何非数字条目标记为错误?

谢谢。

4

1 回答 1

0

我找到了原因。由于属性类型是十进制,当输入文本时,它会抛出异常并且永远不会到达“设置”,因此不会触发验证。在控件上设置“ValidatesOnExceptions=True”将显示默认错误消息“无效格式”。

于 2013-01-07T15:48:20.117 回答