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

Posted

技术标签:

【中文标题】asp.net 中 griffin.mvccontrib 包的服务器错误【英文标题】:Server Error with the griffin.mvccontrib package in asp.net 【发布时间】:2013-02-05 09:25:17 【问题描述】:

为了能够用资源文件翻译我模型中的数据注释,看到很多人推荐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】:

您可能会发现 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;

也是资源文件的程序集。

【讨论】:

以上是关于asp.net 中 griffin.mvccontrib 包的服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Asp.net / Asp.net mvc 中进行实时 Web 体验的方法是啥? [关闭]

ASP.NET/HTML:ASP.NET (.cs) 中 HTML 按钮的 onClick 属性

类型:.net;问题:ASP.NET路由;结果:ASP.NET 路由 .NET Framework 4

asp.net中如何输出数据?

在asp.net中如何对一些数据进行分组

更改 ASP.NET SPA 模板中的 ASP.NET 标识代码的原因?