我得到这样的要求:
不同的航空公司需要不同的旅行者信息。
例如: 航空公司A,需要身份证号码,需要儿童生日,年龄必须在2~12之间。
航空公司B,需要身份证号码和性别。
航空公司C,要求所有旅客过生日,儿童年龄必须在2~12岁之间。
等...
我的问题是:在不同场景中是否有使用不同的验证规则? 此外,所有儿童和成人的信息都收集在一个页面中,因此我需要为旅行者指定验证规则。
如何在 MVC 中执行此操作? 感谢。
答案 0 :(得分: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
}
}
}
答案 1 :(得分:1)
正如mazhar所提到的,如果您不关心客户端验证,则IValidateableObject是一个选项。另一个选项是创建自己的数据注释属性。第三种选择是使用第三方验证库,如Fluent验证。