为了能够用资源文件在我的模型中转换我的数据注释,我看到许多人推荐贾格芬提供的解决方案。
但是,当我遵循本地化教程时,我的项目无法启动。
有问题的代码是这个代码,它应该放在Global.asax.cs文件中:
ModelValidatorProviders.Providers.Add(
new LocalizedModelValidatorProvider(stringProvider)
);它说LocalizedModelValidatorProvider构造函数不带任何参数,其他教程也显示了这一点。
但当我像这样改变台词时:
ModelValidatorProviders.Providers.Add(
new LocalizedModelValidatorProvider()
);我在浏览器中得到以下错误:
尝试以与数组不兼容的类型访问元素。 描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。 异常详细信息: System.ArrayTypeMismatchException:试图以与数组不兼容的类型访问元素。
griffin.mvccontrib包是在Visual 2012下用NuGet安装的。知道我做错了什么吗?
发布于 2014-01-15 14:07:09
你可能会发现此链接很有用
以下是我如何在上面的链接中进行注册:
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;也是资源文件的程序集。
https://stackoverflow.com/questions/14704014
复制相似问题