如何修改默认的ModelState错误提示:字段{0}必须是一个数字
2012-06-26 16:46
309 查看
当使用ViewModel并且某个属性为int或decimal等值类型时,我们如果使用Html.TextBoxFor或Html.TextBox方法,则输入了非数字字符,后台会自动校验,并提示:字段{0}必须是一个数字。
有时候我们需要自定义这个提示,具体可自定义一个ModelBinder类,继承自DefaultModelBinder,重写BindModel方法:
然后在Application_Start事件中注册一下即可:
说明:此方法只针对后台的Model默认校验,如果启用前台unobtrusive js的话,需要自定义客户端的Validate规则,也可参考文章:http://greenicicleblog.com/2011/02/28/fixing-non-localizable-validation-messages-with-javascript/
有时候我们需要自定义这个提示,具体可自定义一个ModelBinder类,继承自DefaultModelBinder,重写BindModel方法:
public class DecimalModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var v = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); decimal parsedValue = 0m; if (!decimal.TryParse(v.AttemptedValue, out parsedValue)) { var error = @"'{0}'不是正确的数值格式"; bindingContext.ModelState.AddModelError(bindingContext.ModelName, string.Format(error, v.AttemptedValue, bindingContext.ModelMetadata.DisplayName)); } return base.BindModel(controllerContext, bindingContext); } }
然后在Application_Start事件中注册一下即可:
ModelBinders.Binders.Add(typeof(decimal), new Ichari.Common.MvcExtended.DecimalModelBinder());
说明:此方法只针对后台的Model默认校验,如果启用前台unobtrusive js的话,需要自定义客户端的Validate规则,也可参考文章:http://greenicicleblog.com/2011/02/28/fixing-non-localizable-validation-messages-with-javascript/
相关文章推荐
- 如何 修改RAILS的默认错误提示 和 Rails validation error message 相关的合集
- WeX5中如何去掉或者修改默认网络错误提示JUSTEP230109
- Struts2 逐步成长:(四) 类型转换错误提示修改,字段验证
- 点击登录Oracle企业管理器,提示错误,您的用户名和/或口令无效和如何修改oracle里面的sys和system的密码
- 点击某些网页内链接时,提示“至少有一个字段错误”
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- 如何解决安装CentOS时遇到引导分区位于一个GPT分区方案的错误提示问题
- SQL里如何查询一个字段里不是数字类型的值出来
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- [转]当用webBrowser1加载网页的时候,网页中出现js错误,会弹出一个提示,如何屏蔽不提示?
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- Struts2上传文件修改默认错误提示
- C#ADO连接修改Paradox表时“操作必须使用一个可更新的查询”错误的处理办法
- [转]当用webBrowser1加载网页的时候,网页中出现js错误,会弹出一个提示,如何屏蔽不提示?
- ACCESS数据库在IIS中的问题 错误提示"操作必须使用一个可更新的查询"
- 关于“操作必须使用一个可更新的查询”错误提示!
- ORACLE修改数据类型时提示要修改字段必须为空
- 网站后台登录aspcms 提示错误号:-2147467259,错误描述:操作必须使用一个可更新的查询。sql=update AspCms_Content set TimeStatus=0 where TimeStatus=1 and Timeing <= 解决方法。
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- Struts2上传文件修改默认错误提示