ASP.NET RangeValidator表现奇怪

时间:2011-04-13 03:28:08

标签: c# asp.net webforms rangevalidator

它的type属性设置为string,它的最小值= 0,最大值= 100。

我想确保输入的数据不会超过数据库中定义的列长度。

现在,当我测试它时,即使我输入了一个或两个字母,它也总是会显示错误信息!

2 个答案:

答案 0 :(得分:3)

您应该使用RegularExpressionValidator。 RangeValidators不适用于字符串长度。将ValidationExpression设置为类似.?的内容,或者如果需要,可以将其缩小为\S?\w?之类的内容。

另外,如果你正在使用一个不在MultiLine模式下的TextBox(如果max是一个字符就没有理由),你可以在控件上设置MaxLength="1",你就不会需要一个验证器。

编辑:如果您确实要在多行TextBox上指定大于1的最大长度,您可以使用如上所述的RegularExpressionValidator,但将ValidationExpression=".{0,100}"设置为最大长度为100. More information on regex quantifiers is available here

如果您有一个单行TextBox,只需将其MaxLength属性设置为所需的最大值,并且不允许任何比这更长的时间;不需要验证器。

如果你想做任何涉及用户输入长度的实时长度检测,那就更复杂,你需要JavaScript。您还应该验证输入服务器端,因为关闭JavaScript的任何用户都可以绕过客户端验证。

答案 1 :(得分:1)

将控件上的“MaxLength”属性设置为1.此MSDN page描述属性及其用法。

RangeValidator验证输入的值而不是长度,因此您使用验证器将有效输入限制为{0,1}。