Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 逐步验证_Asp.net_Validation - Fatal编程技术网

Asp.net 逐步验证

Asp.net 逐步验证,asp.net,validation,Asp.net,Validation,我有一个带有三个文本框控件的aspx页面,我想为所有人进行验证。 我想按顺序显示错误消息, 例如,如果我将所有三个文本框留空,然后单击submit按钮, 首先,它将为第一个文本框显示错误消息,然后当我填充第一个文本框并再次单击“保存”时,它将为第二个文本框显示错误消息,依此类推 这意味着我只想在单击submit按钮后一次显示一条错误消息。 你们能给我指点路吗。你们可以通过检查表单提交情况并发回带有错误信息的文字来做到这一点。在任何情况下,回发验证都比仅仅依赖javascript要好 因此,根据您

我有一个带有
三个文本框控件的aspx页面,我想
为所有人进行验证。
我想按顺序显示错误消息,
例如,如果我将所有三个
文本框留空
,然后单击submit按钮, 首先,它将为第一个文本框显示错误消息,然后当我填充第一个文本框并再次单击“保存”时,它将为第二个文本框显示错误消息,依此类推

这意味着我只想在单击submit按钮后一次显示一条错误消息。
你们能给我指点路吗。

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

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

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

很明显,你会进行更多的检查,通过第一阶段后,你会进入第二阶段。从用户体验来看不是很好,但会起作用。

您可以像这样返回函数值

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";
}
根据您的验证字段依次类推


希望这对您有所帮助

您能使用AJAX控件工具包吗?VAIDatarCallout控件的行为就是这样的,您会得到一个漂亮的小气球,指示错误在哪里

我建议每个文本框使用
控件。对于自定义验证例程,您可以使用类似以下内容:

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
TextBox3
的内容有效
TextBox1
无效,则返回为有效。这将一次只触发一个验证器,直到所有字段都有效。它也更灵活一些,因为您的自定义验证例程可以检查:

  • 必填字段
  • 模式匹配
  • 价值比较
或者您需要的任何其他验证,都包含在一个函数中


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

这对用户来说不是一件麻烦事吗?这是用户的需求。。。。。。