【发布时间】:2010-01-05 15:21:57
【问题描述】:
我正在使用 WCF RIA 服务测试版进行 Silverlight 项目。我正在使用 BlahDomainService.metadata.cs 文件通过添加验证属性来验证字段,例如[正则表达式]。它正在工作,所以我试图将错误消息放入资源文件中,但现在它不起作用。 RegEx 验证并未在客户端上运行,但它正在服务器上运行。
知道是什么原因造成的吗?
在客户端生成的代码文件中,我看到了这个错误:
// Unable to generate the following attribute due to the following error(s):
//
// - The validation attribute 'System.ComponentModel.DataAnnotations.RegularExpressionAttribute' declared ErrorMessageResourceName='RegExError' which was not found on declared ErrorMessageResourceType 'Blah.Web.Resources.SharedResources'.
// [RegularExpressionAttribute("yawn", ErrorMessageResourceName = "RegExError", ErrorMessageResourceType = typeof(Blah.Web.Resources.SharedResources))]
我是如何到达这里的
我在名为 Resources 的文件夹中的 .Web 项目中创建了 SharedResources.resx(和 Vs 创建了 SharedResources.Designer.cs)文件。在 Silverlight 项目中,我创建了一个 Web 文件夹,并在其中创建了一个 Resources 文件夹。在此 Resources 文件夹中,我执行了 Add > Existing Item,然后使用 Add as Link 选项添加了 SharedResources.resx 和 .Designer.cs。这个想法是,这将使两个资源类的命名空间保持相同。然后,我使用 Silverlight 业务应用程序模板作为参考,编辑了 .csproj 文件以使 .Designer.cs 文件成为 .resx 文件的依赖项。
我构建了解决方案并对其进行了测试,RegEx 验证没有抛出任何错误,这很糟糕。然后我找到了上面的消息。为了验证我的链接是否有效,我在 Home.xaml.cs 中输入:
System.Diagnostics.Debug.WriteLine(Web.Resources.SharedResources.RegExError);
并在 VS 的输出窗口中看到了错误。我还提交了对服务的更改,在 EntitiesInError 中的 VaidationErrors 中,我可以看到错误消息,所以我知道它在服务器端工作。只是客户端不是。知道为什么它不起作用吗?
【问题讨论】:
标签: silverlight validation silverlight-3.0 metadata wcf-ria-services