タイトルが明確であるかどうかはわかりません。私はより良いそれを説明してみましょう:注釈付きモデルのリストの検証
私は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行は正しく塗りつぶされていなければなりません。
私は(MVCは単にリストの注釈を無視してGuestResponseクラスに注釈を検証)がない成功を収めてViewModel validation for a Listで説明したように、カスタムアノテーションを作成することによって、これを実行しようとしました:
[EnsureOneElementAttribute(ErrorMessage = "At least a person is required")]
public IList<GuestResponse> GuestResponses { get; set;}
結果:
http://postimage.org/image/b2jn7ta69/