1

情节是这样的 - 我有一个Save()方法可以调用自身的验证方法,我想确定如果验证方法出现错误,该Save()方法的执行将停止。我所做的是制定一种bool验证方法:

protected virtual bool IsNullOrEmptyControl(params Control[] controls)
        {
            bool validationFlag = false;
            foreach (Control ctrl in controls)
            {
                if (string.IsNullOrWhiteSpace(ctrl.Text))
                {
                    ctrl.BackColor = System.Drawing.Color.Yellow;                
                    if (validationFlag == false)
                    {
                        ctrl.Focus();
                        validationFlag = true;
                    }
                }
            }
            if (validationFlag == true)
            {
                MessageBox.Show("The fields in yellow could not be empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

并从我的Save()方法中调用它:

public bool Save()
{
some code...
IsNullOrEmptyControl(txtClientCode, txtClientName);
some code..
clientService.Save(entity);
}

我认为因为我的IsNullOrEmptyControl()方法是bool如果它返回,false那么这将意味着停止进一步的代码执行,Save()但似乎我错了。那么这样做的正确方法是什么?

4

4 回答 4

1

IsNullOrEmptyControl方法只返回值。您应该在我们的代码中检查此值并对其做出反应

bool checkResult = IsNullOrEmptyControl(txtClientCode, txtClientName);
if(checkResult == false)
{
    return false;
}
some code..
clientService.Save(entity);
于 2013-02-25T11:04:21.607 回答
0

您确实应该将验证方法的返回值分配给一个变量,并在调用之前检查它clientService.Save()

此外,您可能想在foreach上面的循环中放一个中断,就在您将标志设置为true.

于 2013-02-25T11:04:34.777 回答
0

我认为代码应该是:

public bool Save()
{
  some code...
    if(IsNullOrEmptyControl(txtClientCode, txtClientName)) {  
      some code..
      clientService.Save(entity);
    }
}
于 2013-02-25T11:02:51.483 回答
0

您应该围绕您的保存调用创建一个 if 语句。如果IsNullOrEmptyControl返回 falseclientService.Save(entity);则不会执行。

public bool Save()
{
    //some code...
    if(IsNullOrEmptyControl(txtClientCode, txtClientName))
    {
        //some code..
        clientService.Save(entity);
    }
}
于 2013-02-25T11:02:55.040 回答