【发布时间】:2014-06-18 16:55:16
【问题描述】:
默认的 StringLength 验证错误消息对我来说太长了,所以我想缩短它。
我知道我可以为每个属性指定 ErrorMessage,但我不想到处重复:
[StringLength(25, ErrorMessage = "Max length is {1}")]
[DisplayName("Address")]
public virtual string BillAddress1 { get; set; }
基于这篇文章,Modify default ErrorMessage for StringLength validation,我将 StringLengthAttribute 子类化:
public class CustomStringLengthAttribute : StringLengthAttribute
{
public CustomStringLengthAttribute()
: this(20)
{
}
public CustomStringLengthAttribute(int maximumLength)
: base(maximumLength)
{
base.ErrorMessage = "Max length is {1}";
}
}
并改为使用 CustomStringLengthAttribute:
[CustomStringLength(25)]
[DisplayName("Address")]
public virtual string BillAddress1 { get; set; }
这编译得很好,我在 CustomStringLengthAttribute 构造函数中设置了一个断点来验证它是否被命中,但不显眼的验证不再起作用 - 无效数据被发送回控制器。
当我不使用我的子类版本时它工作正常。
另外,这里是 javascript 验证:
if (validation.validateForm($('#addressForm'))) {
....
}
验证表单:
function validateForm(form) {
prepareValidationScripts(form);
var validator = $.data(form[0], 'validator');
return validator.form();
}
function prepareValidationScripts(form) {
if (form.executed)
return;
form.removeData("validator");
$.validator.unobtrusive.parse(document);
form.executed = true;
}
我错过了什么?
谢谢。
【问题讨论】:
标签: javascript jquery asp.net-mvc validation