在webform中验证
本文关键字:验证 webform | 更新日期: 2023-09-27 18:02:44
在我的web表单中,我有2个字段,应该只接受数字(其值的计算结果应显示在第三个字段。在用户单击提交按钮之前,这两个字段的RegularValidation工作正常。但不是之后。如何处理?
<asp:TextBox ID="TextBox1" runat="server" placeholder="Liter"></asp:TextBox><span style="color:red;font-weight:bold"> *</span>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="This is required" ForeColor="Red" ValidationGroup="test" ControlToValidate="TextBox1" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" ControlToValidate="TextBox1" runat="server" ForeColor="red" ErrorMessage="Enter only numbers!" ValidationExpression="'d+" Display ="Dynamic"></asp:RegularExpressionValidator>
提交按钮:
protected void btn_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
TextBox3.Text = ((Convert.ToInt32(TextBox1.Text) * 4.18 * Convert.ToInt32(TextBox2.Text)) / 3600).ToString();
double result = Convert.ToDouble(TextBox3.Text);
TextBox3.Text = String.Format("{0:0.00}", result);
您可以编写这样的函数/方法来传递TextBox
的值public static bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
Int32 result;
return Int32.TryParse(val, NumberStyle,
System.Globalization.CultureInfo.CurrentCulture, out result);
}
调用并检查方法,例如传递以下
var _isNumeric2 = isNumeric("9.", System.Globalization.NumberStyles.Integer);
将第一个参数替换为TextBox3。文本值
所需要的就是添加与字段相同的ValidationGroup="test"
。解决方案是:
<asp:TextBox ID="TextBox1" runat="server" placeholder="Liter"></asp:TextBox><span style="color:red;font-weight:bold"> *</span>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="This is required" ForeColor="Red" ValidationGroup="test" ControlToValidate="TextBox1" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" ControlToValidate="TextBox1" runat="server" ForeColor="red" ErrorMessage="Enter only numbers!" ValidationExpression="'d+" ValidationGroup="test" Display ="Dynamic"></asp:RegularExpressionValidator>