2012-10-25 31 views
1

我有一个ASP.net MVC网站,我想使用几个资源文件来设置一些字符串。ASP.net MVC - 使用自定义文化 - 资源未被加载

我有一个类库包含我的ViewModels,我添加了一个资源文件(ValidationMessages)那里,一个字符串(称为测试),然后有像这样的属性在我的视图模型:

 public string TestResource 
     { 
      get 
      { 
       return ValidationMessages.Test; 
      } 
     } 

这工作得很好,当我的看法输出像这样:

<div>@Model.TestResource</div> 

如果我添加一个ValidationMessages.en-au.resx(我的默认是EN-GB)文件到我的类库,并创建一个不同版本的测试字符串,然后在我的global.asax中有以下内容:

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-au"); 
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-au"); 
} 

而且这也很好。

我想要做的就是添加一个自定义文化'en-gb-ly' - 我已经在我的机器上注册了这种文化了(使用here的代码)。当我在我的global.asax中将当前文化设置为“en-gb-ly”,并在我的类库中包含ValidationMessages.en-gb-ly.resx时,输出已恢复为测试的“基本”版本字符串,而不是我的en-gb-ly资源中的那个。

任何人有任何想法,为什么这可能会发生?

+0

快速检查 - 是否有一些错字?你写了你添加了自定义文化'en-xx',但随后用'en-ly'做了测试。你的意思是'en-ly'而不是'en-xx'? – Clafou

+0

对不起,Clafou - 打错了,现在修复了。 – Paddy

+0

阿哈 - 问题现在似乎解决了。我之前一直在关注并添加并随后删除了一个en-us资源文件 - 该DLL仍然存在于我的构建文件夹中 - 删除它并重建将它整理出来... – Paddy

回答

1

要检查的第一件事是即将发布的卫星程序集按预期进行部署。不幸的是,如果您的自定义文化未安装在您的构建机器上,那么它甚至不会构建!

+0

看看(更新后的问题,更简单一点) - 我的自定义文化是“en-gb-ly”,并且在我的类库的bin文件夹中,我有一个带有dll的en-gb-ly文件夹。 – Paddy

+0

打算把这个标记为答案,因为它指出了我看待的方向,这个方向将它整理出来。 – Paddy