タイトルが明確かどうかはよくわかりません。もっとよく説明しましょう:
私は2つのモデルを持っています:
1-GuestResponse.cs:
public class GuestResponse
{
[Required(ErrorMessage="Please enter your name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter your email address")]
[RegularExpression(".+\\@.+\\..+", ErrorMessage="Please enter a valid email address")]
public string Email { get; set; }
[Required(ErrorMessage = "Please enter your phone number")]
public string Phone { get; set; }
[Required(ErrorMessage = "Please especify wheter you will attend")]
public bool? WillAttend { get; set; }
}
2-CompanyGuestResponse.cs:
public class CompanyGuestResponse
{
[Required(ErrorMessage = "Please enter your company name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter your company email address")]
[RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please enter a valid email address")]
public string Email { get; set; }
[Required(ErrorMessage = "Please enter your company phone number")]
public string Phone { get; set; }
public IList<GuestResponse> GuestResponses { get; set;}
}
CompanyGuestResponse モデルの厳密に型指定されたビューもあります。このビューには、ユーザーがプロパティ GuestResponses に入力できるテーブルを含むフォームがあります。
テーブルの入力された行が正しく検証され (つまり、入力されていない行を検証しようとしない)、少なくとも 1 つの行が正しく入力されている場合にのみ、フォームを送信できるようにしたいと考えています。
リストの ViewModel 検証で説明されているようにカスタム注釈を作成してこれを実行しようとしましたが成功しませんでした (mvc は単にリスト注釈を無視し、GuestResponse クラスの注釈を検証しました)。
[EnsureOneElementAttribute(ErrorMessage = "At least a person is required")]
public IList<GuestResponse> GuestResponses { get; set;}
結果: