更改 mvc 表单验证错误消息

Change mvc form validation error messages

我正在尝试更改我的表单字段的 data-val-required 属性,以便出现通用的 "required"。现在我知道我可以使用以下方法做到这一点:

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

但我不想 "hard code" 那样将它放入模板中,我更希望模型使用其上设置的必需属性,然后使用类似这样的东西通过 js 覆盖它:

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

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

我查看了页面的源代码,但看不到验证实例化的位置。

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

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

(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);
});

真的不想在 JavaScript 中执行此操作并操纵属性,这在 Razor 中完全可以实现。

只需让您的 ValidationSummary 不排除个别 属性 错误:

@Html.ValidationSummary(false)

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

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

[Required]  

如果您想覆盖错误消息,只需执行此操作

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

看到这个post:Error messages for model validation using data annotations