为多个字段验证创建方法

时间:2014-01-13 14:54:32

标签: c# validation

正如问题所述,我正在尝试创建一种方法来验证表单上的每个字段。我表单上的每个字段都需要相同的验证。我想过创建一个方法来调用以避免重写代码。同样对于我的方法,当它被多次调用时不会失败。如何使用下面的条件为我的所有字段验证创建方法或其他类型的语句?

if (string.IsNullOrEmpty(firstnameTextBox.Text))
{
     MessageBox.Show("Please enter a first name");
}
else if (!Int32.TryParse(firstnameTextBox.Text, out number))
{
     MessageBox.Show("No numbers allowed for their first name");
}

可能的方法

private bool formValidation(string text)
{
    int number;

    if (string.IsNullOrEmpty(text))
    {
        MessageBox.Show("Please enter a first name");
    }
    else if (!Int32.TryParse(text , out number))
    {
        MessageBox.Show("No numbers allowed for their first name");
    }

    return true;
}

2 个答案:

答案 0 :(得分:1)

问题1:当用户输入空字符串或无效整数时,您没有返回false值。因此无论输入字符串如何,您的方法始终返回true

解决方案1:当用户输入空字符串或无效整数时,您需要return false值。

建议: String.IsNullOrEmpty()方法仅检查字符串是null还是empty,但它不会检查whitespaces,在您的代码用户中可以输入需要识别的空格(来自文本框的用户输入)。所以我建议您使用String.IsNullOrWhiteSpace()而不是String.IsNullOrEmpty()来检查Null,Empty和空格。

完整代码:

private bool formValidation(string text)
{
    int number;

    if (string.IsNullOrWhiteSpace(text))
    {
        MessageBox.Show("Please enter a first name");
        return false;
    }
    else if (!Int32.TryParse(text , out number))
    {
        MessageBox.Show("No numbers allowed for their first name");
        return false;
    }

    return true;
}

答案 1 :(得分:1)

在这种情况下,有两个更好的选择,以免因交叉问题而损害您的代码。我倾向于使用属性来装饰我的类中的字段/属性或方法,然后让一般检查员在运行时读取这些属性。

另一种类似但可能更强大的选择是考虑使用一些面向方面的编程工具,如PostSharp