【问题标题】:ASP.NET Validator Issues For New .NET 4.5 Textbox Modes新 .NET 4.5 文本框模式的 ASP.NET 验证器问题
【发布时间】:2013-09-22 07:45:09
【问题描述】:

我正在使用可用于运行 .NET 4.5 的站点的“新”数字文本框模式,并且我正在尝试使用 asp.net 验证控件来验证用户输入。我可以使用以下 REGEX 表达式验证所选数字是否在指定范围 (1-254) 内:

^([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|2[5][0-6])$

此表达式还应验证输入是否为数值且不包含字符。出于某种原因,该范围的验证工作正常,但如果我输入 "A" 或任何其他字符串,它将返回有效。

如果我从文本框中删除 TextMode="Number" 属性,一切都会正常运行。有没有其他人遇到过这个错误?

如果我在忽略新文本框文本模式的旧浏览器中访问该站点,则验证可以正常工作。

【问题讨论】:

  • 不要使用正则表达式来验证范围内的数字。非常难读。
  • 您是否尝试过范围验证器?
  • 我使用了范围验证器,但遇到了同样的问题,它不会使字母无效。我认为通过切换到 REGEX 可能会解决问题,但似乎并非如此。我完全可以切换回范围验证器,但这会给我留下同样的问题。
  • 你不能验证它是一个数字并验证它在范围内吗?一个输入上的两个验证器是可能的,是吗?例如,在过去,我在验证电子邮件时必须使用“必需”和正则表达式验证器进行验证。
  • 这可能是一个选项,我想现在我只是坚持使用旧的文本框模式,因为并非所有浏览器都支持新模式。

标签: asp.net .net regex validation


【解决方案1】:

听起来你想要这个文本框有两个验证器,一个是输入的值是一个数字(运算符设置为数据类型检查和类型设置为整数的比较器),另一个是数字在给定范围内( rangevalidator 具有适当的最小值/最大值)。

您是否有理由需要在一个验证器中合并这两项检查?

【讨论】:

  • 我不相信将文本框模式设置为“数字”会导致验证。它只是用箭头扩展框以增加/减少值。如果需要,您仍然可以输入字母或其他符号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
相关资源
最近更新 更多