2

サーバーがエンティティ メタデータで追加情報を返すように Breeze を拡張または構成する方法を誰かが知っているかどうか疑問に思っていますか? この追加データを使用して検証を支援したいと思います。

いくつかのデータ注釈が適用されたエンティティ モデルがあるとします。

public class Person {    
    [RegularExpression(@"^$|^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?", 
      ErrorMessage="The Website address does not appear to be valid.")]
    public string Website { get; set; }

    [Required(ErrorMessage="The Name field is required."), 
      MaxLength(150, ErrorMessage = "The Name field cannot exceed 150 characters."), 
      MinLength(5, ErrorMessage = "The Name field must be at least 5 characters.")]
    public string Name { get; set; }
    //...
}

現在、Breeze は受信したメタデータに基づいて MaxLength と Required Validator のみを接続します。Breeze がサーバー エンティティの Data Annotation Attributes に記述されている情報をメタデータに含めることができれば、Breeze がクライアントの EntityType に追加の株式バリデーターを自動的に追加できると考えています (例: RegEx、Range、MinLength、など...)。これは、基本的な検証のユースケースの大部分をカバーします。または、開発者がメタデータを調べて、独自のカスタム RegEx バリデーターを接続するために使用できる regEx 文字列などの有用な情報を引き出すこともできます。

また、Breeze に ErrorMessage 検証属性プロパティの値をメタデータに含めて、それを Breeze クライアントにデフォルトの必須および maxLength メッセージ テンプレートの代わりに使用させる方法はありますか? これは、エラー メッセージをサーバー上の 1 か所で定義するだけでよく、エンティティごとにカスタマイズする必要がないことを意味します。

Breeze によって自動的に処理される可能性のある基本的な検証のように見えるもののために、クライアントで一連のカスタム バリデータを作成して登録する必要がないようにしています。

ありがとう、リチャード

4

2 に答える 2

0

それは素晴らしい質問です。

サーバーがどのようにメタデータをシリアル化するかについては、まだうまく文書化できていませんが、これは「すぐに」実現するはずです。ただし、ネットワーク経由で送信される json を見ると、バリデーターが単純に名前でシリアル化されていることがわかります。この名前は、クライアントの登録済みバリデータ (またはバリデータ ファクトリ) の中から検索され、クライアント側のメタデータに追加されます。したがって、クライアントにバリデーターの「実装」を一意の名前で登録し、サーバーからメタデータを送信するときにサーバーがこの名前を参照するようにするという考えになります。

うまくいけば、クライアントに送信する独自​​のサーバー側メタデータを作成する方法を文書化した後、1 週間ほどでこれがより明確になるでしょう。

于 2013-03-18T16:15:25.560 に答える
0

うーん、1年経ちました。このトピックに関するニュースはありますか?サーバー側ですべての検証ルールを定義し、クライアント側で簡単に利用できるようにすることは完璧なことであるという RWHepburn に完全に同意します。これが EF のデータ注釈の目的であり、簡単になります。

于 2014-05-22T09:38:54.423 に答える