私のビジネス ドメインでは、"User" エンティティは単一の "Person" エンティティに関連付けられています (そのため、User インスタンスにはセキュリティ/ログイン情報が含まれていますが、Person エンティティには個人の人間の連絡先情報が含まれています)。
私のViewModelは次のようになります:
class UserViewModel {
[Required]
public String UserName { get; set; }
public Int64 PersonId { get; set; }
public PersonViewModel Person { get; set; }
public Boolean PersonViewModelIsNew { get; set; }
}
class PersonViewModel {
[Required]
public String FirstName;
[Required]
public String LastName;
// etc
}
Web ページを使用すると、訪問者はユーザーを編集して、ユーザーの個人情報を新しい個人インスタンスまたはデータベースから取得した既存の個人に置き換えることができます。
フォームのスクリーンショットが添付されています。
「別の従業員」ラジオボタン (「UserViewModel.PersonViewModelIsNew」プロパティにマップ) が選択されている場合、「UserViewModel.Person」メンバーの検証が無効になるという考え方です。
ただし、ASP.NET MVC には WebForms のような検証グループの概念がないため、このように検証を制御するにはどうすればよいでしょうか?