1

私はこのような要件を取得します:

航空会社が異なれば、必要な旅行者の情報も異なります。

例:航空会社A、ID番号が必要、子供の誕生日が必要、年齢は2〜12歳である必要があります。

航空会社B、ID番号と性別が必要です。

航空会社C、すべての旅行者の誕生日が必要で、子供の年齢は2〜12歳である必要があります。

等...

私の質問は:とにかく、さまざまなシナリオでさまざまな検証ルールを使用することはありますか?さらに、すべての子供と大人の情報が1つのページに収集されるため、旅行者などの検証ルールを指定する必要があります。

MVCでそれを行うにはどうすればよいですか?ありがとう。

4

2 に答える 2

1

mvc で IValidateObject を使用できます。今まで行ったことを指定していませんが、航空会社のビューモデルを作成し、このように検証します

public class AirlineViewModel: IValidatableObject 
{   
public string AirlineName{ get; set; }

public int IDNo{ get; set; }  

 //  your other properties here  

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    List<ValidationResult> err = new List<ValidationResult>();
    if(AirlineName.Equals("Airline a"))
    {
       if(IDNo>0)
       {
          yield return new ValidationResult("ID cannot be empty", new[] { "IDNo" });
       }
    }
    else if(AirlineName.Equals("Airline b"))
    {
        //  your stuff here
    }
    else if(AirlineName.Equals("Airline C"))
    {
        //  your stuff here
    }           
}

}

于 2012-05-18T03:15:44.847 に答える
1

mazhar が述べたように、IValidateableObject は、クライアント側の検証を気にしない場合の 1 つのオプションです。独自のデータ注釈属性を作成する別のオプション。3 つ目のオプションは、Fluent Validation などのサード パーティの検証ライブラリを使用することです。

于 2012-05-18T03:32:55.647 に答える