私はMVC 2 DataAnnotationは、既存のプロパティに属性を追加することはできますか?
-
18-09-2019 - |
質問
私はモデルとして生成されたクラスを使用している、と私はDataAnnotationは、そのプロパティの一部に属性を追加したいです。それは生成されたコードだとして、私は直接注釈を追加する必要はありません。プロパティにそれらを取り付けるための別の方法はありますか?
私は、モデルのインターフェースを作ると考えられ、それに加入するために生成されたクラスを取得するために、部分クラスを使用してのです。あまり凝ったソリューションは、それがさえうまくいくと仮定すると、ありますか?
解決
はい、あります。あなたは、あなたのオリジナルモデルと同じ性質を持っている、とたmetadataType属性を使用してモデルにそれを接続するメタデータクラスを作成する必要があります:
[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}
public class MyModelMetadata
{
[Required]
public string MyProperty;
// ...
}
例eboveのOriginalModelでは、あなたの適切なモデルクラスで、MyModelMetadataは、プロパティだけに注釈を付けるために使用されるクラスです。 MyModelMetadataは、あなたのモデルが持っている同じ性質を持っている必要があります。
他のヒント
あなたは、あなたのクラスでたmetadataType属性を使用することができます:
実際には、私は、メタデータは、いくつかの頭痛につながることができた、しかし、かなり頻繁に生成されたモデルとの同期から抜け出す見てきました。あなたは別の検証メカニズムの代わりに、データの注釈に見てみたいことがあります。
私がピックアップし、使用を開始するのは非常に簡単である流暢検証に、使用してきました。あなたが持って来ることができ流暢検証2.0(まだベータ版)で XVAL の統合ピースにでも流暢検証がありますクライアント側の検証のためのプロジェクトに。
流暢検証を使用すると、別のクラスであなたの検証を定義することができます。あなたがする必要があるだろうすべては、部分的なクラスを介して達成することができるものをバリデータを使用するためにそれを伝えるあなたの生成されたクラスに属性を追加されます。
また、あなたはあなたのデータの注釈が含まれているドメインモデルからにマッピングされているビュー固有のモデルを作成することができます。その場合には、 AutoMapper のようなものを使用して、前後のマッピングを簡素化します。ドメインモデルが変化した場合次に、あなたは、メタデータのアプローチに対して、コンパイル時エラーを取得します。