【发布时间】:2012-01-08 03:45:16
【问题描述】:
我需要编写一个自定义验证器来检查文本框是否包含带小数的数字,例如 95.3。在 asp.net 的验证器服务器控件中要完成的表达式是什么?
【问题讨论】:
-
如果用户的输入包含小数或要求它有小数,您是否希望验证失败?
标签: asp.net
我需要编写一个自定义验证器来检查文本框是否包含带小数的数字,例如 95.3。在 asp.net 的验证器服务器控件中要完成的表达式是什么?
【问题讨论】:
标签: asp.net
这样的东西应该可以工作,您可以修改以允许您需要或想要的尽可能多的小数位:
\d{0,}.\d{0,2}
假设您正在谈论正则表达式。但如果你是,你应该使用正则表达式验证器而不是自定义的。
另外,这里是另一个非常相似的问题的链接。 link
【讨论】:
请尝试以下方法:
float f;
bool isFloat =float.TryParse("a.0", out f); //Will return false
bool isFloat2 =float.TryParse("95.3", out f); //will return true
祝你好运!
【讨论】:
在 validator_ServerValidate 事件中你可以这样做:
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
If args.Value.Contains(".") Then
'*** Textbox has a decimal...do what you need to handle it ***'
End If
End Sub
但正如其他人所提到的,在不了解您究竟需要发生什么的情况下,您可能希望查看正则表达式验证器并尝试在客户端而不是服务器端进行验证(除非你需要让它在回发时发生)
【讨论】:
不确定这是否正是您要查找的内容,但我很久以前看过这篇文章,其中解释了如何做到这一点。你可能想看看: http://aspdotnet-sequel.blogspot.com/2009/05/aspnet-textbox-validate-integer-float.html
【讨论】: