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