为了能够使用资源文件在我的模型中翻译我的数据注释,我看到许多人推荐jgauffin提供的解决方案。
然而,当我按照localization tutorial我的项目无法启动时。
有问题的代码是这个代码,应该放在Global.asax.cs
文件中:
ModelValidatorProviders.Providers.Add(
new LocalizedModelValidatorProvider(stringProvider)
);
它表示LocalizedModelValidatorProvider
构造函数不接受任何参数,其他教程也会显示这些参数。
但是当我改变这样的界限时:
ModelValidatorProviders.Providers.Add(
new LocalizedModelValidatorProvider()
);
我在浏览器中收到以下错误:
尝试将元素作为与数组不兼容的类型进行访问。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArrayTypeMismatchException:尝试将元素作为与数组不兼容的类型进行访问。
griffin.mvccontrib
软件包是在Visual Studio 2012下与NuGet一起安装的。知道我做错了吗?
答案 0 :(得分:0)
您可能会发现this link有帮助<
以下是我在上述链接中进行注册的方式:
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;
也是资源文件的程序集。