2011-03-22 48 views
0

我需要能够验证一些控件,我不知道如何做到这一点的最佳方式。一些验证应该像验证某些属性的字符串长度一样。这似乎很容易。Silverlight 4条件验证

我需要能够检查必填字段,但是这个应用程序应该允许部分保存,所以我需要能够检查某些条件(例如屏幕上的复选框),并且如果满足该条件,然后验证需要,但如果复选框未选中,则允许保存。

我已经通过一个自定义验证器实现了这一点,一切工作正常的客户端,但一旦我尝试保存,验证检查在服务器端,它会引发异常。

我在RIA元数据上使用EF w/data annotations来为验证器标记属性。

如果任何人都可以指出我在正确的方向上如何做到这一点,我将不胜感激。

+0

抛出了什么样的异常,它是否是正确的行为?我知道如何使用INotifyDataErrorInfo接口,对我来说这是一个更好的验证方法。 – vorrtex 2011-03-22 22:21:05

+0

取消实体模型的注释。无论如何,我不会把它们放在那里。我在我的显示/输入模型上添加了注释。 – 2011-03-29 13:27:25

回答

0

如果你在viewmodel中对属性setter进行验证,那么你可以有条件地抛出异常,如果你的xaml绑定了w/ValidatesOnExceptions = True,你应该得到你想要的行为。

0

它在客户端实现了CustomValidation的接缝。

你应该在“.shared.cs”文件创建服务器端CustomValidation类,使customvalidation是在服务器和客户端都可用。 RIA将把这个验证器复制到客户端。

一定要在你的模型类(也许是属性?)上有一个属性,并将你的checkBox绑定到这个属性。服务器将知道将使用哪种验证。

最后在服务器端的RIA元数据类上使用您的定制验证!再次,RIA将把这个验证复制到客户端。