如果我向这样的属性添加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>
,验证结果如下所示:
这显然不是预期的结果。文本区域应允许比“-1”多的字符。
我可以想到多种解决方法(例如通过jQuery删除属性,使用javascript手动更新规则等)。
解决此问题的最优雅方式是什么?这是MVC / Validator的错误
答案 0 :(得分:0)
您没有指定所需的字符串最大长度,您期望什么? MaxLength
属性的This overload采用整数作为参数,指定字符串的实际允许最大长度。当您使用parameter-less constructor 时,它将使用数据库允许的最大长度,但不确定为什么jQuery Validation选择将其实现为-1。