1

我正在使用 C# 和 ASP.NET 在 Windows Azure 中进行开发。

我想做一个全局方法来验证字段,我的想法是做一个全局方法(例如在 Site.Master 中)

static Regex dateRegex = new Regex("^\\d{2}/\\d{2}/\\d{4}$");
public boolean validate( string type, string stringToValdate)
{
  boolean valid = NO;
  if (type = "date")
  {
      Match m = fechaRegex.Match(stringToValdate);
      if(m.Success)
      {
            valid = true;
      }
  }

 return valid;
}

然后在另一个网络表单中使用它

using ????

Site.Master.validate("date",TextBox1.Text);
4

3 回答 3

2

我会介绍我自己的自定义静态验证类,而不是让它成为 Global.asax 中的一个函数——这更适用于全局站点配置。

于 2012-09-08T18:36:21.423 回答
1

您可以Extension Method在主类型上使用

public static class Extension
{ 
    public static boolean Validate(this Master master, 
                                   string type, 
                                   string stringToValdate)
    {
      boolean valid = NO;
      if (type = "date")
      {
          Match m = fechaRegex.Match(stringToValdate);
          if(m.Success)
          {
                valid = true;
          }
      }

     return valid;
    }
}

用例:

using NamesPaceOfExtension;

Site.Master.Validate("date",TextBox1.Text);
于 2012-09-08T18:34:53.690 回答
0

您可以使用 astatic class将所有验证放在一个地方,例如:

public static class Validation
{
  private static Regex dateRegex = new Regex("^\\d{2}/\\d{2}/\\d{4}$");

  public static boolean Validate(string type, string stringToValdate)
  {
    boolean valid = false;
    if (type = "date")
    {
        Match m = dateRegex.Match(stringToValdate);
        if(m.Success)
        {
          valid = true;
        }
    }

   return valid;
  }
}

然后你可以从任何地方调用它:

bool valid = Validation.Validate("date", "01/01/2012");

然而,静态类和方法方便简单,但更难测试。如果您要进行大量单元测试,通常更容易创建一个非静态类来执行实现某些接口的验证,并使用依赖注入框架将一个传递给每个页面请求。不过,这是一个更高级的主题。


此外,除非您必须这样做,否则您不应该真正制作 1 个大的“验证任何东西”方法,将类型作为字符串传递。它反对关注点分离和单一职责原则。最好为每种类型制作单独的方法。

于 2012-09-08T18:49:52.293 回答