验证silverlight中的错误消息的本地化

时间:2009-11-12 16:20:07

标签: silverlight silverlight-3.0

我想对验证消息使用本地化功能,例如 -

    [Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof( ))]
     public string someText
     { get... set...}

我正在使用MVVM模式,所以这个属性在我的模型中(它是在silverlight的同一解决方案中的一个不同的项目),我的所有本地化资源都在App.current.Resources中。如何将ErrorMessageResourceType设置为我的App资源?

请建议。

提前致谢
西

3 个答案:

答案 0 :(得分:1)

显然,错误消息的本地化并不是那么简单。您应该将一个资源文件添加到MyApp.Web项目,即托管Silverlight应用程序的asp.net站点,然后将该资源添加到silverlight应用程序,然后您就可以执行您在问题中声明的代码经过一些调整后,请按照以下说明进行操作

  

本节探讨错误的原因   消息可以通过存储进行本地化   他们在资源文件和共享   他们跨层。

     

该示例使用.NET RIA Services   以演练项目为基础   项目并建立在它之上。

     

假设我们要添加验证   错误作为LoginID字段的资源。

     
      
  • 在HRApp.Web项目中创建一个新的“Resources”文件夹   (服务器项目)

  •   
  • 将新资源文件添加到此文件夹并为其命名   ValidationErrorResources.resx

  •   
  • 双击.RESX文件以显示资源设计器   页

  •   
  • 使用Name = LoginIDValidationError和添加新的字符串资源   值=“需要登录ID字段”

  •   
  • 点击“访问”,将访问修饰符更改为“公开”   修改器'下拉UI并选择   '公开'并保存项目。这个   生成ValidationErrorResources   HRApp.Web.Resources中的类   命名空间。

  •   
  • 打开'OrganizationService.metadata.cs'文件   并添加以下“必填”字段   验证到LoginID成员。指定   错误消息资源名称和   资源类型值通过设置   对应的属性成员为   如下所示。

  •   
     

[必需(ErrorMessageResourceName =   “LoginIDValidationError”   ErrorMessageResourceType =   typeof(ValidationErrorResources))]

     

公共字符串LoginID;

     

现在我们要分享这个资源   Silverlight项目中的文件   (客户项目)。为此,

     
      
  • 在HRApp项目中创建文件夹Web \ Resources   (文件夹结构必须匹配   服务器上的资源文件命名空间   侧)

  •   
  • 选择Resources文件夹并打开Add Existing file对话框,   浏览到服务器端资源   文件夹位置

  •   
  • 选择ValidationErrorResources.resx和   ValidationErrorResources.designer.cs   文件,并将它们作为链接文件添加到   Silverlight项目。保存   项目文件

  •   
  • 在记事本中打开HRApp.csproj文件,找到所在的部分   包含.designer.cs文件并添加   突出显示的3行   部分

  •   
   <Compile
 Include="..\HRApp.Web\Resources\ValidationErrorResources.Designer.cs">

     <AutoGen>True</AutoGen>

     <DesignTime>True</DesignTime>

     <DependentUpon>ValidationErrorResources.resx</DependentUpon>

     <Link>Web\Resources\ValidationErrorResources.Designer.cs</Link>
 </Compile>
  
      
  • 保存项目文件并在Visual Studio中重新加载项目

  •   
  • 构建解决方案并运行

  •   
     

现在每当验证失败时   LoginID字段的错误消息   从资源文件显示到   用户。资源文件现在可以   自定义以存储特定于区域设置   错误消息。

答案 1 :(得分:0)

当我最近这样做时,这个帮助很多:http://forums.asp.net/t/1433699.aspx

特别是“...资源文件必须转换为类才能在数据注释中的ErrorMessageResourceType的typeof中引用它...”

主搜索引擎还有一些其他有用的点击:http://www.liquidjelly.co.uk/supersearch/?q=silverlight%20dataannotations%20localization&lang=en-GB

答案 2 :(得分:0)

这个解决方案几乎对我有用。我必须做出一些安排来处理位于一个项目中的数据模型(edmx),其他项目中的DataDomainService(Ria)以及其他项目中的Silverlight访问层。 当我在我的情况下编译HRApp等价物时,不会生成包含某些属性的验证信息的元数据。它表示客户端无法访问ValidationErrorResources类型。但是在遵循上面提到的所有指令以及其他一些指令以获得正确的资源名称空间后,客户端可以访问ValidationErrorResources。 如果我自己编写生成的Silverlight类,它就可以工作。 因此类似的生成器似乎不太支持这种项目分离...... 但是,无论如何,这篇文章非常有帮助,也许我会在几天内完成所有工作。 :d