MaxLength属性和不显眼的验证

时间:2014-03-03 14:42:00

标签: jquery-validate unobtrusive-validation asp.net-mvc-5.1

如果我向这样的属性添加MaxLengthAttribute

[MaxLength]
[DataType(DataType.MultilineText)]
public string Notes { get; set; }

标记的呈现方式如下:

<textarea class="form-control" data-bind="value: Notes" data-val="true" data-val-maxlength="The field Notes must be a string or array type with a maximum length of '-1'." data-val-maxlength-max="-1" id="Notes" name="Notes"></textarea>

,验证结果如下所示:

enter image description here

这显然不是预期的结果。文本区域应允许比“-1”多的字符。

我可以想到多种解决方法(例如通过jQuery删除属性,使用javascript手动更新规则等)。

解决此问题的最优雅方式是什么?这是MVC / Validator的错误

1 个答案:

答案 0 :(得分:0)

您没有指定所需的字符串最大长度,您期望什么? MaxLength属性的This overload采用整数作为参数,指定字符串的实际允许最大长度。当您使用parameter-less constructor 时,它将使用数据库允许的最大长度,但不确定为什么jQuery Validation选择将其实现为-1。