如何在ASP NET MVC中定制不引人注目的验证JQuery消息?
我有一个表单,当它执行不引人注目的validtaion时,我希望它显示: 此消息:“请输入一个值。” 而不是此消息:“此字段是必需的。” 我试着在jquery.validate.unobtrusive.js文件的末尾添加这个如何在ASP NET MVC中定制不引人注目的验证JQuery消息?,jquery,asp.net-mvc,validation,unobtrusive-validation,Jquery,Asp.net Mvc,Validation,Unobtrusive Validation,我有一个表单,当它执行不引人注目的validtaion时,我希望它显示: 此消息:“请输入一个值。” 而不是此消息:“此字段是必需的。” 我试着在jquery.validate.unobtrusive.js文件的末尾添加这个 (function ($) { $.extend($.validator.messages, { required: "Please enter a value." }); }(jQuery)); 但它就是不起作用 我还尝试直接修改jquery.v
(function ($) {
$.extend($.validator.messages, {
required: "Please enter a value."
});
}(jQuery));
但它就是不起作用
我还尝试直接修改jquery.validate.js文件中的“messages”变量,但它也不起作用
您能告诉我如何完成此操作吗?为什么不在验证属性上使用ErrorMeesage
[Required(ErrorMessage="Please enter a value.")]
编辑:
从另一个角度来看,这是另一种方法:
- 为您的项目创建App_GlobalResources文件夹(右键单击project->Add->Add ASP.NET文件夹->App_GlobalResources)李>
- 在该文件夹中添加一个resx文件。说
MyNewResource.resx
- 使用所需的消息格式添加资源键
(例如,“内容{0}对字段{1}无效”)。如果您还想更改PropertyValueInvalid
,也可以添加它属性value required
- 将代码
添加到Global.asax启动代码中DefaultModelBinder.ResourceClassKey=“MyNewResource”
[必需]
的所有实例更改为新属性
2) 您可以在jQuery中尝试:
// reset the form's validator
$("form").removeData("validator");
// change the text on each required attribute
$(":input[data-val-required]").attr("data-val-required", "Please enter a value");
// reapply the form's validator
$.validator.unobtrusive.parse(document);
我在Chrome的控制台上试用了这个javascript,一切都正常。之所以需要这样做,是因为1)浏览器缓存了验证规则,因此需要清除它们(有关详细信息,请参阅)。2)页面呈现后,所有错误消息都会出现在html标记中,因此您需要在此处更改验证消息。如果在jquery.validate.js中直接修改消息后没有任何更改,则可能意味着您的web浏览器缓存需要重置。或者,如果在jquery.validate.unobtrusive.js或jquery.validate.js之后调用了本地化专用脚本(如message_xx.js?),则它可能会隐藏/覆盖您的自定义更改。@AirL我重置了我的web浏览器,重建了我的项目,它会继续执行相同的操作。我没有专门的本地化脚本。当我检查Chrome的开发者控制台时,我可以看到正在使用的文件有我的修改。->我认为MVC只是不使用这些消息,而是从其他地方加载。但我不知道在哪里。请参阅查看源代码,所有消息都在标记上,因此在初始化期间,如displayFor或EditorFor,htmlAttributes内的方法根据消息指定数据-属性值。因为如果使用“ErrorMessage”,我需要在我所需的每个字段中执行此操作。相反,如果我可以修改消息,我只需要在一个地方修改它。