asp.net中的griffin.mvccontrib包的服务器错误

时间:2013-02-05 09:25:18

标签: asp.net-mvc-3 griffin.mvccontrib

为了能够使用资源文件在我的模型中翻译我的数据注释,我看到许多人推荐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一起安装的。知道我做错了吗?

1 个答案:

答案 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;

也是资源文件的程序集。