1

我有一个 ASP.net MVC 站点,我想使用几个资源文件来设置一些字符串。

我有一个包含我的视图模型的类库,我在那里添加了一个资源文件(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' - 我已经在我的机器上注册了这种文化(使用这里的代码)。当我在 global.asax 中将当前文化设置为“en-gb-ly”并在我的类库中包含 ValidationMessages.en-gb-ly.resx 时,输出已恢复为测试的“基本”版本字符串,而不是我的英文资源中的那个。

有人知道为什么会发生这种情况吗?

4

1 回答 1

1

首先要检查的是,en-ly 卫星组件是否按预期部署。不幸的是,如果您的自定义文化没有安装在您的构建机器上,那么它甚至不会被构建!

于 2012-10-25T11:40:17.570 回答