0

我有一个 aspx 页面three textbox controls,我想do validation为所有。我想按顺序显示错误消息,例如,如果我留下所有三个text boxes empty并单击提交按钮,首先它将show error message用于第一个文本框,然后当我填写第一个文本框并再次单击保存时,它会显示错误消息第二个文本框等等。

这意味着我只想在单击提交按钮后一次显示一条错误消息。你能建议我的方式吗?

4

4 回答 4

0

您可以通过检查表单的提交并返回带有错误消息的文字来做到这一点。在任何情况下,回发验证都比仅仅依赖 javascript 要好。

因此,根据您要使用的检查级别,您可以执行以下操作:

protected void btnSubmit_Click(object sender, eventArgs e)
{
  if(String.IsNullOrEmpty(txtBox1.Text))
  {
    ltError.Text = "Sorry, error message for box1";
    return;
  }
}

显然,您将进行更多检查,并且在通过第 1 阶段后,您将进入第 2 阶段。从用户体验来看不是很好,但会起作用。

于 2013-07-03T11:15:34.920 回答
0

你可以像这样返回一个函数值

public string CheckValidation()
{
    if (txtFirstName.Text.Trim().Equals(string.Empty))
       return "Please enter firstname";

    if (txtLastName.Text.Trim().Equals(string.Empty))
       return "Please enter lastname";
}

依此类推,根据您的验证字段。

希望这可以帮助你

于 2013-07-03T11:18:57.807 回答
0

可以使用 AJAX 控件工具包吗?VaidatorCallout 控件以这种方式运行,您会看到一个漂亮的小气球,指示错误在哪里。

ASP.NET 验证器标注

于 2013-07-03T11:21:26.960 回答
0

我会<asp:CustomValidator>为每个文本框推荐一个控件。您可以将以下内容用于自定义验证例程:

var textBox1IsValid = function textBox1IsValid(sender, args) {
    var tb = document.getElementById('TextBox1'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    arg.IsValid = resultOfValidation;
    return resultOfValidation;
},
textBox2IsValid = function textBox2IsValid(sender, args) {
    var tb = document.getElementById('TextBox2'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    //return either the validity of TextBox2
    //or (if TextBox1 is not valid) return true so the
    //validator for TextBox2 doesn't fire.
    arg.IsValid = resultOfValidation || !textBox1IsValid(sender, args);
    return resultOfValidation;
},
textBox3IsValid = function textBox3IsValid(sender, args) {
    var tb = document.getElementById('TextBox3'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    //return either the validity of TextBox3
    //or (if either TextBox1 or TextBox2 is not valid) return
    //true so the validator for TextBox3 doesn't fire.
    arg.IsValid = resultOfValidation || !textBox1IsValid(sender, args) || !textBox2IsValid(sender, args);
    return resultOfValidation;
};

这种方法的优点是,如果它们的内容有效TextBox2无效,它将返回有效。这一次只会触发一个验证器,直到所有字段都有效。它也更灵活一点,因为您的自定义验证例程可以检查:TextBox3TextBox1

  • 必填项目
  • 模式匹配
  • 价值比较

或您需要的任何其他验证,都包含在一个函数中。

缺点是您还需要在服务器端复制验证逻辑。

于 2013-07-03T11:33:32.997 回答