/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

ASP.NET MVC Compare ErrorMessage 无效导致无法显示自定义错误信息

2014-12-05 十有三 0 浏览:1万+ .NET技术 ASP.NET MVC

前段时间做项目的时候发现,ASP.NET MVC中CompareAttribute的ErrorMessage自定义错误信息设置无效,没有办法显示我们自己定义的错误信息,而是显示默认的错误信息!经过研究发现这是MVC 5.0的一个BUG,现在官方已经修复了这个BUG,只要用NuGet将ASP.NET MVC包升级到5.0以上就可以了。

相关的BUG说明:https://aspnetwebstack.codeplex.com/workitem/1401

项目中View视图的代码:

@using (Html.BeginForm("Register", "Account", FormMethod.Post))
{
    <input type="hidden" name="ReturnUrl" value="@ViewBag.ReturnUrl" />
    <div class="form-group">
        <label>账号:</label>
        @Html.TextBoxFor(m => m.AccountName, new { @class = "form-control", placeholder = "输入账号" })
        @Html.ValidationMessageFor(m => m.AccountName)
    </div>
    <div class="form-group">
        <label>密码:</label>
        @Html.PasswordFor(m => m.AccountPassword, new { @class = "form-control", placeholder = "输入密码" })
        @Html.ValidationMessageFor(m => m.AccountPassword)
    </div>
    <div class="form-group">
        <label>确认密码:</label>
        @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control", placeholder = "再次输入密码" })
        @Html.ValidationMessageFor(m => m.ConfirmPassword)
    </div>
    <div class="form-group">
        <input type="submit" value="注册用户" class="btn btn-success btn-block" />
    </div>

}

Model:

    /// <summary>
    /// 注册视图模型
    /// </summary>
    public class RegisterViewModel
    {
        [XmlElement("账号名称")]
        [Required(ErrorMessage = "请输入账号!")]
        [StringLength(50, ErrorMessage = "账号名称不能超过50个字符!")]        
        public string AccountName { get; set; }

        [XmlElement("账号密码")]
        [Required(ErrorMessage = "请输入密码!")]
        public string AccountPassword { get; set; }
        /// <summary>
        /// 确认密码
        /// </summary>
        [XmlIgnore]
        [Required(ErrorMessage = "请输入确认密码!")]
        [System.ComponentModel.DataAnnotations.Compare("AccountPassword", ErrorMessage = "两次输入的密码不一致!")]
        public string ConfirmPassword { get; set; }
    }

虽然我们在RegisterViewModel类的ConfirmPassword 属性上设置了Compare验证,并且自定义了错误信息"两次输入的密码不一致!",但实际上每当验证没有通过的时候,显示的却是默认的错误信息!

一直显示默认的错误信息

解决ErrorMessage自定义错误设置无效的方法

1、使用NuGet升级ASP.MVC程序包到5.0以上,这是最佳的方法!5.0以上版本已经修复此BUG,本文发布前已经到5.22版本了。

打开NuGet程序包管理器,并打开 更新->nuget.org  查看最新的程序包更新。

查看更新

找到Microsoft ASP.NET MVC 并更新,最好连上面的中文资源也更新下,如果在更新列表没找到只能自己手动输入命令更新了。

选择程序包

更新完成后看下当前的版本,本文发表的时候最新版本是5.22。

升级成功后的版本号


2、在视图界面上重新声明自定义错误信息,这个方法也只是临时的方案:

@Html.ValidationMessageFor(Model => Model.ConfirmPassword, "两次输入的密码不一致")

3、在实体的属性上使用System.Web.Mvc命名空间的CompareAttribute,而不使用System.ComponentModel.DataAnnotations.CompareAttribute:

[System.Web.Mvc.Compare("AccountPassword", ErrorMessage = "两次输入的密码不一致!")]

但是强烈建议不要这么做,因为System.Web.Mvc.CompareAttribute是已经过时的,如果使用了VS会有警告提示!


作者:十有三

出处:https://shiyousan.com/post/635533359699843158

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: Visual Studio 2013 社区版和速成版之间的区别
  • 下一篇: ASP.NET MVC 出现“System.Web.Mvc.CompareAttribute”已过时

相关文章
  • .Net Framework4.0 ashx页面报错:检测到有潜在危险的Request.Form值
  • C# String.Substring(Int32, Int32)超出长度是否会出错
  • ASP.NET MVC 获取及手动更新AntiForgeryToken防伪标记
  • ASP.NET 动态输出404 HTTP状态代码
  • 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题
  • 解决VS2013编码遇到无法嵌入互操作类型“ChinaPay_NET.NetPayClientClass”请改用适用的接口的问题
发表评论
记住昵称

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件

推荐文章

  • 探究Visual Studio生成的.vs文件夹内部结构和作用
  • 解决Windows虚拟主机无法设置IIS配置但需要添加MIME类型的问题
  • ASP.NET 动态设置 HTTP 500 引发内部服务器错误
  • 安卓手机上的OneNote同步失败提示错误代码e4010640
  • .NET项目在生成时如何将静态资源文件复制到输出目录

最新评论

  • 可乐可乐,谢谢谢谢谢*10086
  • 按上边的2个步骤,没有解决问题。 最后是右键
  • 不错
  • 专门过来看的,讲的很好,学到了很多。
  • 下面的隐藏按钮勾上 就不会出现了

友情链接

  • Passingwind的博客
  • 坤哥网
  • 码友网
  • 王政乔|中国

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号