[英]How to stop model validation propagation on a property with multiple attributes
我的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,换句话说,我希望模型验证能够自动停止它,而无需在这些属性上进一步传播和执行其他属性。
无论如何我能达到预期的效果吗?
不确定你是否能够完全按照自己的意愿行事,但从逻辑上讲,如果没有值或没有有效值,那些其他验证属性就没有意义。 因此,在添加自己的验证错误之前,您可以非常轻松地让它们执行相同的检查。 换句话说,如果没有值,则ValidDate只是不添加其错误,并且如果没有值或者该值不是有效日期,则IsDateAfterOrOnStartDate不添加其错误。 最终结果将是你想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.