我在MVC3表单中有多个select
列表框。用户可以在此列表框中添加&删除自定义option
元素。不过,我想验证列表框中没有2个选项包含相同的值。是否可以使用MVC不显眼适配器在验证函数期间自定义jQuery验证消息?
我创建了一个实现IClientValidatable的自定义ValidationAttribute。服务器和客户端验证都在工作。然而,我的ErrorMessage看起来是这样的:
ErrorMessage = "{0} has more than 1 '{1}' option.")
不幸的是我只能传递部分格式化的消息给客户端验证消息,我做它像这样:
var rule = new ModelClientValidationRule
{
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
ValidationType = "noduplicatestringvalues",
};
验证不会知道在验证运行之前哪些选项值是重复的,所以我想在验证功能期间完成消息格式化。
但是,似乎只能在$.validator.unobtrusive.adapters.add()
函数中设置错误消息。
我曾尝试验证期间设定select
元件上的data-val-noduplicatestringvalues
属性,但仍显示像这样的错误消息:
字段名具有多于1“{1}”项。
有没有什么办法可以在验证功能中更改错误信息?
有趣的是,另外一天我读了另一篇关于null FormContext的文章,导致在使用表单输入加载部分视图时data-val属性不显示。谢谢你会试试这个... – danludwig