【问题标题】:Validate single validation groups step by step in code behind在后面的代码中逐步验证单个验证组
【发布时间】:2015-03-18 21:46:45
【问题描述】:

我有一个表单的三个部分,它们包含在 jquery 选项卡中。我想让每个选项卡都有自己的验证器,这样如果该表单上存在验证错误,就很容易看到用户需要重新执行哪些表单。我遇到的问题是,当我尝试这样的事情时:

private void ValidateTabOne()
{
    Page.Validate("t1");
    if (!Page.IsValid)
        cvt1.IsValid = false;
}

private void ValidateTabTwo()
{
    Page.Validate("t2");
    if (!Page.IsValid)
        cvt2.IsValid = false;
}

protected void btnSave_Click(object sender, EventArgs e)
{
    ValidateTabOne();
    ValidateTabTwo();

    if (Page.IsValid)
    {
       //do the save
    }
}

如果 t1 组中的任何内容无效(无论 t2 组是否有效),cvt2 将始终无效,因为我首先 Validate("t1")。

我仍然想在后面的代码中做到这一点。如何一次验证一个组,或“重置”验证以排除 Page.IsValid 检查中的先前组?

我知道在最坏的情况下,我可以编写一个巨大的语句来检查每个验证器的 IsValid,但我更愿意使用验证组。

【问题讨论】:

  • 也许您可以在回发中发送一个选项卡 ID,这样您就知道应该在 btnSave_Click 处理程序中验证哪个组。
  • 如果我单独保存每个选项卡,这是个好主意。不幸的是,我想一次保存所有选项卡。因此,它仍然会按顺序(如上)验证每个选项卡,并且无法正确验证。

标签: c# asp.net .net validation


【解决方案1】:

目前我发现最好的方法是使用 Page.GetValidators :

foreach (IValidator v in Page.GetValidators("t1"))
{
    if (!v.IsValid)
    {
        cvt1.IsValid = false;
        return;
    }
}
cvt1.IsValid = true;

在我进行自定义验证之前,这只是检查以确保所有必需的验证都已被考虑在内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2016-01-02
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多