1

タイトルが明確かどうかはよくわかりません。もっとよく説明しましょう:

私は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;} 

結果:

http://postimage.org/image/b2jn7ta69/

4

1 に答える 1

0

すべてのフィールドではなく、モデル自体で検証したいことを理解しているので[Required]、プロパティの属性を削除し、アクションでフィールドのいずれかが入力されているかどうかを検証し、そうでない場合は続行し、エラーを追加しますそれをどのフィールドにも関連付けないでください

だから私があなたに言っているのは、この場合に注釈を落として手動でチェックすることです

于 2012-04-05T14:42:20.560 に答える