1

我的视图模型上有以下属性:

    [Required(ErrorMessage = "Email is required")]
    [RegularExpression(RegularExpressions.Email, ErrorMessage = "Email is not valid")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

在 MVC4 中,由于 DataType 注释,这被渲染为<input type="email"...非常适合将键盘更改为包含 @ 的设备,例如 ipad。不幸的是,jquery.validate 似乎使用自己的正则表达式自动验证该字段,因此如果用户输入了不正确的电子邮件,则会显示 jquery 验证错误消息,而不是我在属性中定义的错误消息。

停止 jquery.validate 执行此自动验证以便使用我的正则表达式的最佳方法是什么?

4

2 回答 2

1

简而言之,这个问题的答案是 MVC 不支持自动覆盖 JQuery 验证消息或抑制验证。

但是,您可以相对轻松地本地化 JQuery 验证。以下是一些如何做到这一点的示例:

如何直接更改 JQuery 验证文本

jQuery 验证本地化插件

** 警告 - 我自己没有测试过这些,但一般来说,您希望在页面上的 JQuery 引用之后包含您的脚本

于 2013-05-17T01:17:07.933 回答
1

Dave Ward找到了这个答案,提出了一种不涉及更改外部 js 库的解决方法。

只需在您的 jquery 和 jquery.validate 包括后添加以下内容:

$.validator.methods.email = function (value, element) {
    return this.optional(element) || true; };
于 2013-08-17T21:01:48.170 回答