簡體   English   中英

如何在具有多個屬性的屬性上停止模型驗證傳播

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM