使用 UnobtrusiveJavaScript 时从 jquery 验证中获取消息

Getting the message from jquery validation when using UnobtrusiveJavaScript

提问人:SoftwareSavant 提问时间:9/6/2012 更新时间:9/7/2012 访问量:461

问:

嘿,StackOverflow 爱好者。

我正在尝试将我的一个旧站点更新到最新版本的 Asp.net MVC4。它以前在 MVC2 上,在 MVC2 上,它允许我将我的 jquery 和客户端的东西与任何后端的东西几乎分开。但我想在 MVC4 中,他们希望你将很多验证内容直接绑定到你的模型等等。

但是我有一个客户端jquery验证脚本,它以前运行良好,我想知道,我怎样才能让它再次工作。具体来说,我有一个字段,如果用户输入的字符超过 4000 个字符,则不会进行验证。否则就不需要了。这是之前在 MVC2 中工作的客户端代码。

Comment: {
    required: function (element) {
    return $(element).val().length > 4000;
    },
    maxlength: 4000
}

以及未通过验证时将显示的消息...

messages: {
                ...
                Comment: 'Why dont you stop attempting to put in more than 4000 characters?  Thanks...'
            }

如何使用 MVC 4 做到这一点?为了在另一个字段中显示任何内容,我注意到我需要在我的模型中的字段中放置一个必需的字段......

    [Required(ErrorMessage = "Please select an Admit Date")]
    public DateTime? AdmitDate { get; set; }

有没有办法编写需求函数,以便仅在特定情况下才需要它?如果您明白我的意思,我宁愿将其保留在客户端,以将我的担忧分开。任何帮助将不胜感激。

asp.net-mvc-4 unobtrusive-javascript jquery-validate

评论


答:

1赞 Martin Devillers 9/7/2012 #1

您可以使用 和 来约束注释中的输入。[Required][StringLength]

[Required(ErrorMessage = "Please fill in a comment")]
[StringLength(4000, ErrorMessage = "Why dont you stop attempting to put in more than 4000 characters?  Thanks...")]
public string Comment { get; set; }

默认数据注释不涵盖条件必需的约束。处理“复杂”验证的默认方法是在模型上实现接口。IValidatableObject

但是,由于您正在寻找客户端解决方案,因此我们可以查看其他可能为您解决此问题的框架。例如,MVC 万无一失验证支持也适用于客户端的属性。[RequiredIf]

评论

0赞 SoftwareSavant 9/7/2012
男孩,我想念包括验证插件和黑客攻击。