有没有办法让ASP.NET文本框只接受货币值,并且在验证控件时,事先插入$符号?
例子:
10.23变为$ 10.23
$ 1.45 $ 1.45
10.a由于不是有效数字而引起错误
我有一个RegularExpressionValidator验证号码是否有效,但我不知道如何强制$符号进入文本.我怀疑JavaScript可能有用,但想知道是否还有其他方法可以做到这一点.
AJAX Control Toolkit中的ASP.NET MaskedEdit控件可以完成您的要求.
我知道答案已被接受,但我想为有相同问题并寻找多种解决方法的任何人抛弃另一种解决方案.
我这样做的方法是使用jQuery 格式货币插件绑定客户端的用户输入.在服务器端解析此输入仅需要:
// directive using System.Globalization; // code decimal input = -1; if (decimal.TryParse(txtUserInput.Text, NumberStyles.Currency, CultureInfo.InvariantCulture, out input)) { parameter = input.ToString(); }
唯一的缺点就是用户可以关闭javascript,在这种情况下,运行服务器端的RegEx验证器可以作为后备.如果控件是数据绑定的,那么您所要做的就是decimalValue.ToString("{0:c}")
,如其他人所述,为了显示正确的货币格式.
关于这一点很酷的是,如果用户输入文本框并$0.00
在客户端显示,则服务器端if语句将返回false.如果您的十进制值在数据库中不可为空,只需更改decimal input = -1
为decimal input = 0
,您将拥有默认值0.