ASP.NET Core MVC中MaxLength验证阻止输入超长度字符问题求助
问题原因
你遇到的问题本质是ASP.NET Core的输入Tag Helper默认行为导致的:当视图模型属性标注了[MaxLength]或[StringLength]特性时,Tag Helper会自动给对应的textarea/input元素添加原生HTML的maxlength属性。这个属性是浏览器原生控制的,会直接阻止用户输入超过长度限制的内容,自然不会触发jQuery Validation的错误提示。
解决方案
你只需要取消Tag Helper自动生成maxlength属性的行为即可,最简单的修改方式是调整contact.cshtml中的textarea代码:
<textarea rows="4" asp-for="Message" maxlength="@null"></textarea>
你给maxlength显式赋值为@null后,Tag Helper就不会自动生成原生的maxlength属性,浏览器也就不会限制输入长度。此时jQuery Validation绑定的maxlength验证规则仍会正常生效,完全符合你的预期:
- 输入内容超过10个字符时可以继续输入,同时触发
Too long!的错误提示 - 删除内容到10个字符以内时,错误提示自动消失
补充说明
如果你使用[StringLength]替代[MaxLength],上述方案同样适用,两种特性都会触发Tag Helper自动生成maxlength属性,用同样的方式取消即可。
内容的提问来源于stack exchange,提问作者Gael123123
相关产品推荐
相关产品推荐

