验证一步一步

时间:2013-07-03 10:19:53

标签: asp.net validation

我有一个带three textbox controls的aspx页面,我希望所有人都do validation。 我想在序列中显示错误消息, 例如,如果我离开所有三个text boxes empty并单击提交按钮, 首先它将show error message作为第一个文本框,然后当我填充第一个文本框并再次单击保存时,它会显示第二个文本框的错误消息,依此类推。

这意味着我只想在单击提交按钮后一次显示一条错误消息。 你能不能让我这样推荐我。

4 个答案:

答案 0 :(得分:0)

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

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

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

显然你会在更多的检查中工作,在通过stage1之后你会进入第2阶段。从用户体验来看并不是很好但是会有效。

答案 1 :(得分: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";
}
根据您的验证字段

等等。

希望这有助于你

答案 2 :(得分:0)

您可以使用AJAX控件工具包吗? VaidatorCallout控件以这种方式运行,你得到一个漂亮的小气球,指示错误的位置。

ASP.NET Validator Callout

答案 3 :(得分: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;
};

此方法的优势在于TextBox2TextBox3如果其内容有效,如果TextBox1无效,则返回有效。这将一次仅触发一个验证器,直到所有字段都有效。它也更灵活,因为您的自定义验证例程可以检查:

  • 必填字段
  • 模式匹配
  • 价值比较

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

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