方案
我的用例是jQuery不引人注意的验证和the StringLength attribute。我的数据库列是varchar(500),我想阻止用户输入超过500个字符,因此我将viewmodel属性装饰为[StringLength(500)]
。非常基本。
为该属性生成的html是正确的:
<textarea name="MyTextbox" id="MyTextbox"
data-val-required="The MyTextbox field is required."
data-val-length-max="500"
data-val-length="The field MyTextbox must be a string
with a maximum length of 500." data-val="true"></textarea>
问题
jQuery验证似乎没有像它应该那样考虑尾随空格,所以它让坏数据通过。
例如;如果我尝试输入以下内容,这些是我得到的结果:
如果我不使用服务器端验证&amp;它通过DbContext.SaveChanges(),Entity Framework将抛出一个DbEntityValidationException。
由于我使用服务器端验证(典型的asp.net-mvc检查ModelState.IsValid)并将其捕获为无效,因此这并不是什么大不了的事。所以它不会漏掉,但它只是在这个非常具体的情况下必须击中服务器才有点难看。这是jQuery的错误,还是按预期工作?如果是这样,那似乎没有多大意义。