2013-07-03 66 views
0

我有一个aspx页面three textbox controls,我想do validation所有。 我想要显示的错误消息的顺序, 例如,如果我离开了所有三个text boxes empty并点击提交按钮,0​​首先它将show error message第一个文本框,然后当我填写第一个文本框,然后再次点击保存然后它显示第二个文本框的错误消息等。验证一步一步

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

+0

这不是用户的麻烦吗? – Alan

+0

其用户需求...... – Chandra

回答

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阶段。从用户体验来看并不好,但会起作用。

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"; 
} 

等按您的验证领域。

希望这有助于你

0

你可以使用Ajax控件工具包? VaidatorCallout控件按照这种方式运行,并且您会得到一个很好的小气球,指示错误的位置。

ASP.NET Validator Callout

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; 
}; 

这种方法的优点是,如果他们的内容是否有效如果TextBox1无效TextBox2TextBox3将恢复为有效。这将一次只触发一个验证器,直到所有字段都有效。这也是一个更灵活一点作为您的自定义验证程序可以检查:

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

,或者你需要的任何其他验证,都包起来合并为一个功能。

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