【问题标题】:Creating a method for multiple field validations [closed]创建用于多个字段验证的方法[关闭]
【发布时间】:2014-01-13 14:54:31
【问题描述】:

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

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

【问题讨论】:

  • 那么可能的方法有什么问题?
  • @TimSchmelter 当我过去尝试使用类似的工具时,它会导致问题。
  • 什么样的问题?请提供更多详细信息。目前很难回答这样一个模糊的问题。
  • @TimSchmelter 很快就会回来
  • @TimSchmelter 该方法确实有效。上次我尝试它时,它返回错误,所以我认为我的方法错误。

标签: c# validation


【解决方案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;
}

【讨论】:

  • 你说得对,我没想到。
  • 如何将所有 m if 语句包装在一起?我有六个方法调用,如果这些都正常,它们会执行插入命令。
【解决方案2】:

在这种情况下,有两个更好的选择,以免横切关注点玷污您的代码。我倾向于使用属性来装饰我的类中的字段/属性或方法,然后让一般检查员在运行时读取这些。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2011-04-17
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多