为什么我的共享资源文件不能在我的Silverlight RIA项目中运行?

时间:2010-01-05 15:21:57

标签: silverlight validation silverlight-3.0 metadata wcf-ria-services

我正在使用WCF RIA Services测试版开发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))]

我如何到达

我在.Web项目中创建了一个名为Resources的文件夹中的SharedResources.resx(以及Vs创建的SharedResources.Designer.cs)文件。在Silverlight项目中,我创建了一个Web文件夹,并在其中创建了一个Resources文件夹。在这个Resources文件夹中,我添加了>现有项目,然后使用“添加为链接”选项添加SharedResources.resx和.Designer.cs。这个想法是,这将使两个资源类的名称空间保持相同。然后我编辑.csproj文件,使.Designer.cs文件成为.resx文件的依赖项,使用Silverlight业务应用程序模板作为参考。

我构建了解决方案并对其进行了测试,并且RegEx验证没有抛出错误,这很糟糕。然后我找到了上面的消息。要验证我的链接是否正常工作,请在Home.xaml.cs中输入:

System.Diagnostics.Debug.WriteLine(Web.Resources.SharedResources.RegExError);

并在VS的“输出”窗口中看到错误。我还提交了对服务和EntitiesInError的更改,在VaidationErrors上,我可以看到错误消息,所以我知道它在服务器端工作。它只是客户端而不是。知道为什么它不起作用吗?

2 个答案:

答案 0 :(得分:1)

您还在Web项目的客户端silverlight项目中添加了资源(.resx)作为链接。 请参阅VS 2010中的模板Silverlight Bussiness Application。它有一个很好的样本。

答案 1 :(得分:0)

除了我没有将.resx的AccessModifier设置为Public之外,一切都还可以。一旦我完成了它并重建了所有,它就有用了。