ASP TextBox支持带的十进制数字。 (点)

时间:2018-07-12 09:58:01

标签: asp.net vb.net textbox decimal-point

我有一个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之类的值(带逗号)时,它被接受。我需要能够输入一个点。

我尝试将文本框的类型更改为“货币”,但是发生相同的错误。文本框的“类型”列表中没有其他相关类型。

为了完整起见,这里是我代码后面的文本框声明。

Dim _premium As Decimal = Decimal.Parse(txtPremium.Text)

我不确定该如何使文本框接受点。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

嗨比较验证器用于比较两个字段之间的值,例如密码和匹配的密码

如果要验证十进制,请使用正则表达式验证器,并将表达式接受十进制。将以下表达式中的2替换为允许的最大十进制值^ \ d +。\ d {0,2}

    <asp:RegularExpressionValidator runat="server" ErrorMessage="Decimal Only" ID="txtregpre" ValidationGroup="Insert"
                       ControlToValidate="txtPremium"              
ValidationExpression="^\d+\.\d{0,2}$"></asp:RegularExpressionValidator>

答案 1 :(得分:1)

您可以使用正则表达式代替比较验证,这是同时适用于10.0和10,0的示例

   <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>
        <!-- Your Regular Expression Validator -->
        <asp:RegularExpressionValidator ID="txtPremium_Integer"
            ControlToValidate="txtPremium" ValidationGroup="Insert" ForeColor="Red"
            runat="server" Display="Dynamic"
            ErrorMessage="'Premium' must be decimal"
            ValidationExpression="^\d+([,\.]\d{1,2})?$">
        </asp:RegularExpressionValidator>
    </asp:TableCell>