これは簡単なことのように思えますが、フレームワークではやりたいことをさせてくれないような気がします。
3 つのページがあるとします。1 つは名/姓を要求するページ、もう 1 つは電話番号を要求するページ、もう 1 つは両方を編集できるページです。
public class NameModel
{
public string FName {get;set;}
public string LName {get;set;}
}
public class PhoneModel
{
public string Phone { get; set;}
}
public string NamePhoneModel
{
public string FName {get;set;}
public string LName {get;set;}
public string Phone {get;set;}
}
現時点でこれらのモデルを検証する方法は、2 つのインターフェイスがINameModel
ありIPhoneModel
、すべての検証属性を持っていることです。私は何度も使用[MetadataType(typeof(INameModel))]
します。NameModel
[MetadataType(typeof(IPhoneModel))]
PhoneModel
私が本当にやりたいことは、両方のインターフェースを使用することです。これにより、すべての検証属性NamePhoneModel
を再入力する必要がなくなります。これは単純な解決策であることに注意してください。実際のプロジェクトはこれよりもはるかに複雑です。上記の例では、継承するのは簡単ですが、には存在しない追加のプロパティがある可能性があることを考えてください。または、さらに複雑にするために、別のページに存在する電子メールのプロパティが存在する可能性があります。NameModel
NamePhoneModel
NameModel
EmailModel
これらすべてのルールを単純に複製しなければならないのは正しい方法ではないように感じます-より良い/適切な方法があるはずです??