我正在编写一个.NET MVC应用程序,并使用非侵入性验证来根据模型中的数据注解清理客户端输入。我有一个输入,我不想让HTML标记进入,并希望显示自定义错误消息,如果一个HTML标记输入。因此,我创建了一个带有自定义正则表达式的数据注解来覆盖这些条件,如下所示:
[Required(ErrorMessage = "You must provide a First Name.")]
[RegularExpression(@"<[a-z][\s\S]*>", ErrorMessage = "Invalid character")]
[DisplayName("First Name")]
public string FirstName { get; set; }
这样做的问题是,无论是什么字符,无论是<test>
还是abc
都会导致Invalid Character
消息出现。required属性工作正常,如果我尝试一个简单的正则表达式,如:
[RegularExpression("[a-z]", ErrorMessage = "Invalid character")]
这是100%的预期,导致我相信我的正则表达式是不正确的,坚果我知道它的HTML验证工作,因为我可以证明它与在线工具。我做错了什么?
1条答案
按热度按时间z9zf31ra1#
如果你看一下RegularExpressionAttribute的文档,它说:
指定ASP.NET动态数据中的数据字段值必须与指定的正则表达式匹配。
所以你的属性是做与你想要的完全相反的事情。尝试使用: