更改mvc表单验证错误消息

时间:2015-05-15 12:01:30

标签: c# asp.net-mvc asp.net-mvc-4 razor unobtrusive-validation

我正在尝试更改表单字段的data-val-required属性,以便显示一个通用的“必需”。现在我知道我可以使用以下内容执行此操作:

@Html.TextBoxFor(model => model.Name, new { data_val_required ="required" })

但是我不想将它“硬编码”到模板中,我希望模型使用必需的属性集,然后使用类似的东西通过js覆盖它:

$('input, select, textarea').each(function () {
    var element = $(this);
    if (element.data('val-required')) {
        element.data('val-required', 'required');
    }
});

我已经准备好了文档,并检查了数据属性是否已经改变(他们有)但显然这种情况发生得太晚,以至于验证没有注意到它。所以我需要知道什么时候MVC绑定它的表单验证,所以我可以在之前运行它或如何仅更改客户端的错误消息。

我查看了页面的来源,却看不到验证实例化的位置。

对于那些说改变所需属性或者做服务器端的人,我不想这样做,好像我已经禁用js我在表单的顶部显示一个验证摘要,如果他们都只是说需要。这就是为什么我只想做这个客户端

enter image description here

3 个答案:

答案 0 :(得分:2)

我认为你可以通过数据注释实现这一目标。只需将模型项标记为

即可
[Required]  

如果要覆盖错误消息,请执行此操作

[Required(ErrorMessage = "Name is required")]

请参阅此帖子:Error messages for model validation using data annotations

答案 1 :(得分:1)

对于那些对解决方案感兴趣的人,以下内容将重置验证消息:

(function () {
    $('input, select, textarea').each(function () {
        var element = $(this);
        if (element.data('val-required')) {
            element.attr('data-val-required', 'Required'); // please note this has to be the attr not data
        }
    });

    form = $('form');
    form.removeData("validator").removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse(form);
});

答案 2 :(得分:1)

真的不希望在JavaScript和操作属性中这样做,这在Razor中是完全可以实现的。

只需让您的ValidationSummary不排除个别财产错误:

@Html.ValidationSummary(false)

然后删除所有字段的所有ValidationMessageFor