我的web api中有以下模型
public class MyModel
{
[Required(ErrorMessage = "Date is required")]
[ValidDate(ErrorMessage = "Not a valid date format")]
[ValidStartDate(ErrorMessage = "Not a valid start date")]
public string startDate { get; set; }
[Required(ErrorMessage = "Date is required")]
[ValidDate(ErrorMessage = "Not a valid date format")]
[IsDateAfterOrOnStartDate("startDate", ErrorMessage = "end date must be greater than or equal to start date")]
public string endDate { get; set; }
}
我在自定义属性ValidDateAttribute,ValidStartDateAttribute和IsDateAfterOrOnStartdateAttribute中实现了一些自定义逻辑。但我想要的是,如果ValidDateAttribute(在两个属性上)给出错误或模型验证失败。我不希望框架在startDate属性上执行ValidStartDateAttribute,在endDate属性上执行IsDateAfterOrOnStartDateAttribute,换句话说,我希望模型验证能够自行停止它,而无需在这些属性上进一步传播和执行其他属性。
无论如何我能达到预期的效果吗?
答案 0 :(得分:0)
不确定您是否能够完全按照自己的意愿行事,但从逻辑上讲,如果没有值或没有有效值,那些其他验证属性就没有意义。因此,在添加自己的验证错误之前,您可以非常轻松地让它们执行相同的检查。换句话说,如果没有值,则ValidDate只是不添加其错误,并且如果没有值或者该值不是有效日期,则IsDateAfterOrOnStartDate不添加其错误。最终结果将是你想要的。