Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP NET MVC中定制不引人注目的验证JQuery消息?_Jquery_Asp.net Mvc_Validation_Unobtrusive Validation - Fatal编程技术网

如何在ASP NET MVC中定制不引人注目的验证JQuery消息?

如何在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

我有一个表单,当它执行不引人注目的validtaion时,我希望它显示:

此消息:“请输入一个值。”

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

我试着在jquery.validate.unobtrusive.js文件的末尾添加这个

(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
  • 使用所需的消息格式添加资源键
    PropertyValueInvalid
    (例如,“内容{0}对字段{1}无效”)。如果您还想更改
    属性value required
    ,也可以添加它
  • 将代码
    DefaultModelBinder.ResourceClassKey=“MyNewResource”
    添加到Global.asax启动代码中

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

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

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”,我需要在我所需的每个字段中执行此操作。相反,如果我可以修改消息,我只需要在一个地方修改它。