如何在ASP NET MVC中自定义不显眼的validationJQuery消息?

我有一个表单,当它做了不引人注意的validation时,我希望它显示:

此消息: “请输入值。

而不是这条消息: “此字段是必需的。”

我尝试在我的jquery.validate.unobtrusive.js文件的末尾添加它

(function ($) { $.extend($.validator.messages, { required: "Please enter a value." }); }(jQuery)); 

但它只是不起作用。

我也尝试直接修改jquery.validate.js文件中的“messages”变量,但它也没有工作。

你能告诉我怎样才能完成这件事?

如果您正在使用数据注释属性,并且不想为每个属性自定义消息(通过您的一条评论显示这是这种情况),我可以看到两个选项:

1)创建自己的数据注释属性并设置默认消息,并将[Required]所有实例更改为新属性。

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)validation规则由浏览器缓存,因此您需要清除它们(有关详细信息,请参阅此答案 )。 2)呈现页面后,所有错误消息都在html标记中,因此您需要更改validation消息。

为什么不在validationattrs上使用ErrorMeesage

 [Required(ErrorMessage="Please enter a value.")] 

编辑:从ThisPost ,这是另一种方法:

  • 为项目创建App_GlobalResources文件夹(右键单击项目 – >添加 – >添加ASP.NET文件夹 – > App_GlobalResources)。
  • 在该文件夹中添加resx文件。 说MyNewResource.resx
  • 使用所需的消息格式添加资源键PropertyValueInvalid (例如,“内容{0}对于字段{1}无效”)。 如果您想更改PropertyValueRequired也可以添加它。
  • 将代码DefaultModelBinder.ResourceClassKey = "MyNewResource"到您的Global.asax启动代码中。