我有一个内置于.Net 4.0的VB Web应用程序,我正在尝试添加一些自定义验证。
我有6个asp文本框,我想要求用户总和为100.所有6个字段都需要字段和必需的表达式验证器,要求用户输入介于0.0和100.0之间的数字,但我需要额外的验证来总和到100.0。所以,6个文本框只有数字,只允许整数或单个十进制数。
我是一个相对较新的程序员,这是最好的方法:
Textbox1 + Textbox2 + Textbox3 + Textbox4 + Textbox5 + Textbox 6 = 100.0(如果没有,提示用户的值不等于100.0并且在值固定之前不允许按钮单击。
感谢您的帮助!
答案 0 :(得分:3)
使用CustomValidator
这是唯一可以省略ControlToValidate
的验证器:
<asp:CustomValidator runat="server" ID="CustomValidator1"
Text="The sum must be 100"
ClientValidationFunction="clientValidate"
EnableClientScript="True"
Display="Static">
</asp:CustomValidator>
Protected Sub ServerValidation(source As Object, args As ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
Dim val1 As Decimal
Dim val2 As Decimal
Dim val3 As Decimal
Dim val4 As Decimal
Dim val5 As Decimal
If Decimal.TryParse(TextBox1.Text, val1) AndAlso _
Decimal.TryParse(TextBox2.Text, val2) AndAlso _
Decimal.TryParse(TextBox3.Text, val3) AndAlso _
Decimal.TryParse(TextBox4.Text, val4) AndAlso _
Decimal.TryParse(TextBox5.Text, val5) Then
args.IsValid = val1 + val2 + val3 + val4 + val5 = 100
Else
args.IsValid = False
End If
End Sub
您还可以提供客户端验证功能。因此,您需要找到每个javascript文本框的引用,然后计算客户端上的总值。
例如:
<script type="text/javascript" >
function clientValidate(source, arguments) {
var txt1 = document.getElementById('<%= TextBox1.ClientID %>');
var txt2 = document.getElementById('<%= TextBox2.ClientID %>');
var txt3 = document.getElementById('<%= TextBox3.ClientID %>');
var txt4 = document.getElementById('<%= TextBox4.ClientID %>');
var txt5 = document.getElementById('<%= TextBox5.ClientID %>');
if(txt1 != null && txt2 != null && txt3 != null && txt4 != null && txt5 != null && txt1.value != "" && !isNaN(txt1.value) && txt2.value != "" && !isNaN(txt2.value) && txt3.value != "" && !isNaN(txt3.value) && txt4.value != "" && !isNaN(txt4.value) && txt5.value != "" && !isNaN(txt5.value))
{
var num1 = parseFloat(txt1.value);
var num2 = parseFloat(txt2.value);
var num3 = parseFloat(txt3.value);
var num4 = parseFloat(txt4.value);
var num5 = parseFloat(txt5.value);
arguments.IsValid = num1 + num2 +num3 + num4 + num5 == 100;
}
else
arguments.IsValid = false;
}
</script>