1

Windows Azureでの開発にC#とASP.NETを使用しています。

フィールドを検証するためにグローバルメソッドを実行したいのですが、私の考えは(たとえば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;
}

そして、それを別のWebフォームで使用します

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

static classたとえば、aを使用して、すべての検証を1か所にまとめることができます。

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つ渡す方が簡単な場合がよくあります。しかし、それはトピックのもう少し進んだものです。


また、必要がない限り、型を文字列として渡して、1つの大きな「すべてを検証する」メソッドを実際に作成するべきではありません。これは、関心の分離と単一責任の原則に反します。タイプごとに別々のメソッドを作成することをお勧めします。

于 2012-09-08T18:49:52.293 に答える