MVC3升级到MVC4模型验证信息显示为英文问题及解决方案

最近把项目从mvc3升级到mvc4,部署到服务器上出现了一个小问题,就是在表单里字段验证时,验证显示信息为英文,如下:

The field 平均租金 must be a number

而在本地是好的,可以显示中文信息:

字段 平均租金 必须是一个数字

说明:我们在服务器上没有安装mvc组件,只是把需要的DLL引入进来即可。也安装了.net4.0 简体中文语言包。之前MVC3项目也是正常的,升级到MVC4才出现这个问题。

百度,google也仅仅几条信息,没有想要的答案。当然解决方法也不是没有,就是在服务器上安装MVC4需要的组件。但服务器上运行了多个项目,如果安装一些程序,需要重启势必会对其他正在处理业务的项目造成影响,所有暂时忽略这个办法。

仔细分析了一下这个问题,我是从mvc3升级到mvc4,中间只是替换了一些mvc相关dll引用和配置文件的版本号,那么我新建一个真正的mvc4的项目部署到服务上看会不会出现这个问题。

答案是能够正常显示中文验证信息。那么问题出在哪里呢? 我们都知道一台服务器如果没有安装mvc组件,只需要引用那几个DLL即可。而验证只需要在配置里开启,然后再页面上引用那两个JS即可。所以,问题肯定是出在这个几个地方。于是通过比较,发现新建的mvc4项目bin目录里多了一些文件夹,如 zh-hans,zh-hant等,作为程序员对zh-打头的东西总是很眼熟,百度一下,zh-hans代表中文简体,zh-hant代表中文繁体。然后把这个文件夹拷贝到项目里,验证信息马上正常显示中文了(当然,你也可以把zh-hans里面无关的dll删掉)。

至此,问题已解决了,但我又发现了一些让我眼熟的东西。zh-hans文件夹里dll都带有resources。 没错,就是"resources" 让我想起了做过的中英文版本,那不也是添加资源文件么。

我们用ILSpy反编译一下,可以看到,这不就是我们刚刚所猜测的资源文件么,而且还能看到我们上面的验证信息。

至此,所有谜底已解开。

时间: 2024-11-06 07:31:54

MVC3升级到MVC4模型验证信息显示为英文问题及解决方案的相关文章

MVC3升级到MVC4之困惑

[A]System.Web.WebPages.Razor.Configuration.RazorPagesSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.RazorPagesSection.类型 A 源自“System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:

爱上MVC~MVC4模型验证可以放在前端

回到目录 MVC4.0推出后,在模型验证上有了一个新的改近,它支持前端验证,即在用户POST之前,如果验证失败,则Action(POST方式的)不会被执行,而直接停留在原视图,这对于用户体验是好的,它就类似于ajax验证一样,不会将原页重定向. MVC4.0在view中引用了jqueryval文件后,即可实现客户端实时验证 @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 如果你不需要走JS方式验证,还是使用原来的P

更改MVC3默认错误提示信息 模型验证 validation

原文发布时间为:2011-07-20 -- 来源于本人的百度文章 [由搬家工具导入] Model Metadata and Validation Localization using Conventions http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx By default, ASP.NET MVC leverages Data Ann

ASP.NET MVC3升级到ASP.NET MVC4 的方法

ASP.NET MVC3升级 ASP.NET MVC4 的方法: 1.先去掉引用的System.Web.Mvc.dll(MVC3版本),重新引入System.Web.Mvc.dll(MVC4版本) 2.替换项目 Web.config 中的 System.Web.Mvc, Version=3.0.0.0 System.Web.WebPages, Version=1.0.0.0 System.Web.Helpers, Version=1.0.0.0 System.Web.WebPages.Razor

013_模型验证

模型验证(Model Validation):是确保用户接收的数据适合于绑定的模型,并且在不合适时,给用户提供有用的信息,以帮助他们修正其问题的过程. 模型验证过程一:检查接收的数据——是保持域模型完整性的方式之一. 模型验证过程二:帮助用户修正问题. 示例项目介绍 项目模板:Basic 项目名称:ModelValidation 一个新的模型类文件:Appointment.cs using System; using System.Collections.Generic; using Syste

MVC模型验证

一.在动作方法中执行验证Controller中使用ModelState.AddModelError()方法在验证中根据条件输出错误信息.如: ModelState.AddModelError("UserName", "用户名不能为空");需要注意的是,这句生成的是属性级错误,因为AddModelError的第一个参数指定的是被验证的属性名:如果要改成模型级错误,则保持第一个参数为空,如:ModelState.AddModelError("", &

webapi - 模型验证

本次要和大家分享的是webapi的模型验证,讲解的内容可能不单单是做验证,但都是围绕模型来说明的:首先来吐槽下,今天下午老板为自己买了套新办公家具,看起来挺好说明老板有钱,不好的是我们干技术的又成了搬运工(谁叫技术部男的多呢哈哈),话说让我们搬点儿什么小座椅板凳就够了吧,为什么4大箱的家具都让我们动手,每箱东西拆分出来每件几乎需要至少4个人才能挪到的东西,而且不少呢,这是让我们搬完后不用上班的节奏吧:我很想问的是买这么贵的东西,难道不给包送和组装?行政部门就不能请点搬运工,非要节约这点钱(技术可

ASP.NET Web API模型验证以及异常处理方式

ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations. 具体来说,比如有:[Required(ErrorMessage="")][Range(0, 999)][Bind(Exclude="")][DisplayName("")][StringLength(1024)]... 验证扩展可以看这里:http://dataannotationsextens

当ASP.NET MVC模型验证遇上CKEditor

项目需要,使用到了CKEditor编辑器.这是个很不错的富文本编辑器,但是当它绑定的字段需要进行模型验证的时候,却会出现验证失效的问题.因此本文旨在记录这个问题和给出解决办法.以下以ValidationAttribute和jQuery Validate2中验证方式为例.测试项目包含3个页面:Index.cshtml(包含2个部分视图).Add.cshtml(添加页).Companies(列表页,仅为展示数据):一个模型(Company).项目功能截图如下: -------------------