作成アクションと挿入アクションに別々のビューモデルを使用します。あなたのバリデーションルールが違うならば、とにかく別のモデルを使う価値があると思います。
public class InsertMyObjectViewModel : IValidatable
{
[Required]
public string Name { get; set; }
// note the lack of Required attribute here
public string Address { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
...
}
}
そして、あなたのビジネスルールは、例えば、登録時に顧客の名前ではなく、自分のアドレスを指示する場合、これは意味をなさない可能性が編集
public class UpdateMyObjectViewModel : IValidatable
{
[Required]
public string Name { get; set; }
[Required]
public string Address { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
...
}
}
ための別。ただし、ユーザーがアカウントを変更すると、ビジネスルールにアドレスが必要になることがあります。多くの場合、オブジェクトあたり1:1のビューモデル:アクション比を使用することが理にかなっています。
今、Validate
ロジックを書くと、はるかに簡単になります。少し重複しているかもしれませんが、ビジネスルールが将来変更されるときに変更する方が簡単です。
大変ありがとうございます! – AnonyMouse