【发布时间】:2018-07-12 09:58:00
【问题描述】:
我有一个 ASP 页面,该页面中有一个文本框。此 TextBox 的类型为 Double,后端代码中的类型为 Decimal。
这是文本框。
<asp:TableCell>
<asp:TextBox ID="txtPremium" runat="server" Width="90px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPremium" runat="server" ControlToValidate="txtPremium"
ErrorMessage="Required" ForeColor="Red" Display="Dynamic" ValidationGroup="Insert"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="txtPremium_Integer" runat="server" ValidationGroup="Insert"
ControlToValidate="txtPremium" Display="Dynamic" ErrorMessage="'Premium' must be decimal"
ForeColor="Red" Operator="DataTypeCheck" SetFocusOnError="true" Type="Double" />
</asp:TableCell>
在 UI 中,当我尝试将值添加到该文本框中时,例如 10.0(带点),文本框错误消息会出现。当我尝试输入像 10,0 (with a comma) 这样的值时,它被接受了。我需要能够输入一个点。
我尝试将文本框的类型更改为货币,但出现同样的错误。文本框的类型列表中没有其他相关类型可用。
为了完整起见,这里是我后面代码中文本框的声明。
Dim _premium As Decimal = Decimal.Parse(txtPremium.Text)
我不确定如何让文本框接受点。
有什么想法吗?
【问题讨论】:
-
您的 PC/ASP 主机的语言/区域设置是否使用欧洲数字格式,将
,视为数字和小数之间的分隔符,而不是.? -
哦,我不知道我使用的是客户计算机。我该如何检查?
-
您可以创建自己的
CustomValidator来检查逗号和点是否都是正确输入的十进制数:€ 1,95和$ 1.95。 @ValentinSky,它不是重复的,因为 OP 正在询问验证控制。 -
我已经更新了代码。
标签: asp.net vb.net textbox decimal-point