验证货币输入的最佳方法是什么?

6

我创建了下面的TextBox和CompareValidator,我认为它们可以允许以下形式的输入:

  • 5
  • 5.00
  • $5.00

不幸的是,它不允许带有美元符号的版本。如果您不允许美元符号进行货币类型检查,那么这样做有什么意义呢?有没有一种方法可以允许这个符号?

            <asp:TextBox ID="tb_CostShare" runat="server" Text='<%# Eval("CostShare", "{0:$0.00}")%>' CausesValidation="true" />
            <asp:CompareValidator   ID="vld_CostShare" 
                                    runat="server" 
                                    ControlToValidate="tb_CostShare" 
                                    Operator="DataTypeCheck" 
                                    Type="Currency" 
                                    ValidationGroup="vld" 
                                    ErrorMessage="You must enter a dollar amount for 'Cost Share'." />    

如果您使用{0:c}呢? - Greg
3
货币验证可以包括除美元以外的货币... - Austin Salonen
@Austin - 我只想验证美元以外的任何东西。 @Greg - 我该如何使用 {0:c} 进行验证? - Abe Miessler
我不知道,也许它不是那样工作的。 - Greg
1
你为什么想在验证中加入美元符号?你应该只验证数据 5.35。如果你想要显示美元符号,可以在文本框前面放置一个标签。这样你也可以将其存储为 SQL 中的十进制数。 - Dustin Laine
我想接受用户输入,无论是否带有美元符号。我正在显示的是一个单独的问题,已经被正确处理了。 - Abe Miessler
2个回答

8

CompareValidator不支持货币符号。你可以在输入控件前加上$,或使用正则表达式验证器,这个页面有一个例子。

以下模式将匹配您的示例(由http://www.regexlib.com提供):

^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$

1

此外,您可以编写自定义验证器来解析字符串,带有或不带有$。但是,您需要编写一些JavaScript代码才能进行任何客户端验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接