2

为了能够用资源文件翻译我的模型中的数据注释,我看到很多人推荐jgauffin提供的解决方案。

但是,当我按照本地化教程进行操作时,我的项目无法启动。

有问题的代码是这个,它应该放在Global.asax.cs文件中:

ModelValidatorProviders.Providers.Add(
  new LocalizedModelValidatorProvider(stringProvider)
);

它说LocalizedModelValidatorProvider构造函数不接受任何参数,其他教程也显示了这一点。

但是当我像这样改变这一行时:

ModelValidatorProviders.Providers.Add(
  new LocalizedModelValidatorProvider()
);

我在浏览器中收到以下错误:

试图以与数组不兼容的类型访问元素。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArrayTypeMismatchException:尝试将元素作为与数组不兼容的类型进行访问。

这些griffin.mvccontrib包是在 Visual Studio 2012 下与 NuGet 一起安装的。知道我做错了什么吗?

4

1 回答 1

0

您可能会发现 此链接有帮助

这是我在上面的链接中进行注册的方式:

ResourceStringProvider myResouceFile = new ResourceStringProvider(ModelsResources.ResourceManager);
//ModelsResources is my resource file generated class
GriffinStringsProvider griffinStringsProvider = new GriffinStringsProvider(myResouceFile);
ValidationMessageProviders.Clear();
ValidationMessageProviders.Add(griffinStringsProvider);

ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(myResouceFile);
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());

确保您包含正确的程序集

using System.Resources;
using Griffin.MvcContrib.Localization;
using Griffin.MvcContrib.Localization.ValidationMessages;

也是您的资源文件的程序集。

于 2014-01-15T14:07:09.420 回答