1

我得到这样的要求:

不同的航空公司需要不同的旅客信息。

例如:航空公司A,需要身份证号码,孩子生日是必需的,年龄必须在2~12岁之间。

航空公司 B ,需要身份证号码和性别。

航空公司 C,要求所有旅客的生日,儿童年龄必须在 2 ~12 岁之间。

ETC...

我的问题是:有没有在不同的场景中使用不同的验证规则?此外,所有儿童和成人的信息都集中在一页中,因此我需要指定旅行者实例的验证规则。

我怎样才能在MVC中做到这一点?谢谢。

4

2 回答 2

1

那么你可以在 mvc 中使用 IValidateObject 。到目前为止,您还没有指定您所做的事情,但我会创建一个 Airline viewmodel 并像这样验证它

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 是一种选择。创建您自己的数据注释属性的另一种选择。第三种选择是使用第三方验证库,如 Fluent Validation。

于 2012-05-18T03:32:55.647 回答