如何使用ASP.Net将RangeValidator的文本属性强制转换为整数?

如何使用ASP.Net将RangeValidator的文本属性强制转换为整数?,asp.net,casting,attributes,Asp.net,Casting,Attributes,我显然是ASP.Net新手,但我有一个简短的问题 我在主页上有表格的文本框和标签。其中一个文本框是下注金额。但是,由于输入是一个文本框,所以在尝试将另一个文本框ID(桩号)传递给RangeValidator时,我会不断出错 为了澄清这一点。。我需要范围验证器,以便赌注介于1和赌注之间。因为很明显,打赌不能超过赌注 我试着使用CInt(currentStack.Text)和其他一些东西,但它似乎被固定为字符串/文本类型 下面是我一直尝试做的一个例子: <asp:RangeVa

我显然是ASP.Net新手,但我有一个简短的问题

我在主页上有表格的文本框和标签。其中一个文本框是下注金额。但是,由于输入是一个文本框,所以在尝试将另一个文本框ID(桩号)传递给RangeValidator时,我会不断出错

为了澄清这一点。。我需要范围验证器,以便赌注介于1和赌注之间。因为很明显,打赌不能超过赌注

我试着使用CInt(currentStack.Text)和其他一些东西,但它似乎被固定为字符串/文本类型

下面是我一直尝试做的一个例子:

        <asp:RangeValidator ID="RangeValidator2" ControlToValidate="wager" ForeColor="Red" ErrorMessage="Please enter a valid wager." MinimumValue="1" MaximumValue="CInt(currentstake.Text)" Type="Integer" runat="server"></asp:RangeValidator>


有什么简单的方法可以解决这个问题吗?谢谢

实现这一点的一种方法是使用CustomValidation,您可以创建自定义函数javascript或在服务器中检查值是否正确,因此您可以查看t以了解更多信息

其他选项是使用CompareValidator但不适用于范围,您还可以验证该值是否小于CurrentStack。因此:

<asp:CompareValidator ID="CompareValidator1" 
   runat="server" 
   ControlToCompare="currentstake" 
   ControlToValidate="wager" 
   Operator="LessThan" 
   ErrorMessage="Wrong Value" 
   SetFocusOnError="True">

我会使用最灵活的验证器类型。这是一个完整的示例,包含客户端和服务器验证功能,包括验证组:

aspx:


谢谢这应该是对ASP.Net的介绍,并且可以在没有javascript定制的情况下完成。我正在寻找一个快速解决方案,但我会看看以防万一。我会更新我的答案,以显示一个替代方案CompareValidator@TimSchmelter:我完全同意:)哦,好的,这是有道理的,谢谢!实际上,我在vb文件中找到了一种作弊的方法。我使用了:如果Int32.TryParse(wager.Text,wagerAmount),那么wagerAmount=CInt(wager.Text)。这是可行的,但肯定不是最有效的方法。我会把这件事记录下来,以备将来参考。谢谢
<asp:TextBox ID="Wager" runat="server" ValidationGroup="WagerVG"></asp:TextBox>
<asp:TextBox ID="Stake" runat="server" ValidationGroup="WagerVG"></asp:TextBox>

 <asp:CustomValidator ValidationGroup="WagerVG" ID="CustomValidator1" runat="server"
     OnServerValidate="WagerValidation" 
     ClientValidationFunction="WagerValidation_CV"
     ValidateEmptyText="true" 
     ErrorMessage="Please enter a valid wager." 
     ForeColor="Red">
</asp:CustomValidator>

<asp:Button ID="SubmitWager" Text="Submit" ValidationGroup="WagerVG" runat="server" />
<script type="text/javascript">
    function WagerValidation_CV(sender, e) {
        var valid = false;
        var txtWager = document.getElementById('<%= Wager.ClientID %>');
        var txtStake = document.getElementById('<%= Stake.ClientID %>');
        if (txtWager != null && txtStake != null) {
            var wager = parseInt(txtWager.value);
            var stake = parseInt(txtStake.value);
            valid = wager >= 1 && wager <= stake;
        }
        e.IsValid = valid;
    }
</script>
protected void WagerValidation(object source, ServerValidateEventArgs args)
{
    bool valid = true;
    int wager, stake;
    if (!int.TryParse(Wager.Text, out wager))
        valid = false;
    if (!int.TryParse(Stake.Text, out stake))
        valid = false;
    valid = valid && wager >= 1 && wager <= stake;
    args.IsValid = valid;
}
<asp:CompareValidator ID="CompareValidator1" runat="server" ForeColor="Red" ValidationGroup="WagerVG"
    ControlToValidate="Wager" ControlToCompare="Stake" 
    Operator="LessThanEqual" Type="Integer" 
    ErrorMessage="Please enter a value greater 0 and less or equal stake">
</asp:CompareValidator>
<asp:CompareValidator ID="CompareValidator2" runat="server" ForeColor="Red" ValidationGroup="WagerVG"
    ControlToValidate="Wager" ValueToCompare="1"
    Operator="GreaterThanEqual" Type="Integer" 
    ErrorMessage="Please enter a value greater 0 and less or equal stake">
</asp:CompareValidator>