0

我正在使用WCF RIA Services测试版来开发Silverlight项目。我正在使用BlahDomainService.metadata.cs文件通过添加验证属性来验证字段,例如[正则表达式]。它正在工作,所以我试图将错误消息放在资源文件中,现在它不起作用。 RegEx验证不在客户端上运行,尽管它正在服务器上运行。为什么我的共享资源文件不能在我的Silverlight RIA项目中工作?

任何想法可能会造成这种情况?

在客户端上生成的代码文件,我看到这个错误:

// 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))]

我是如何得到我的

我创建了SharedResources.resx(和Vs的创建SharedResources .Designer.cs)文件放在名为Resources的文件夹中.Web项目中。在Silverlight项目中,我创建了一个Web文件夹,并在其中创建了一个Resources文件夹。在此Resources文件夹中,我执行了Add> Existing Item,然后使用Add as Link选项添加SharedResources.resx和.Designer.cs。这个想法是,这将保持两个资源类的命名空间相同。然后,我使用Silverlight Business Application模板作为参考编辑.csproj文件,使.Designer.cs文件成为.resx文件的依赖项。

我构建了解决方案并对其进行了测试,RegEx验证未抛出错误,这很糟糕。然后我发现上面的消息。为了验证我的链接是工作,在Home.xaml.cs,我输入:

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

,并在VS. Output窗口看到错误我也向服务提交了更改,并且在EntityInError中,在VaidationErrors上,我可以看到错误消息,所以我知道它在服务器端工作。只是客户端不是。任何想法为什么它不工作?

回答

0

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

+0

我也面临同样的问题你能详细解释一下plz的解决方案吗? 谢谢 – 2010-08-30 13:19:34

+0

右键单击Visual Studio中的.resx文件名。选择打开。在顶部你会看到字符串 - 添加资源 - 删除资源 - [工具图标] - 访问修改器 - 在下拉列表中选择公共。 – serialhobbyist 2010-08-31 13:27:06

1

您还可以在Web项目的客户端silverlight项目中添加资源(.resx)作为链接。 请参阅VS 2010中的Silverlight商业应用程序模板。它有一个很好的示例。

相关问题