0
我正在開發ASP.NET MVC應用程序。我找到了Fluent Validation偉大的驗證工具,它的工作原理,但與我目前的架構,它有一個缺點。驗證器不關心元數據。爲了清晰起見,我在單獨的類上使用元數據。如何在MetadataTypeAttribute中使用FluentValidation?
型號
[MetadataType(typeof(DocumentEditMetadata))]
[Validator(typeof(DocumentValidator))]
public class DocumentEditModel
{
public string DocumentNumber { get; set; }
(etc...)
}
元數據模型
public class DocumentEditMetadata
{
[Required]
[StringLength(50)]
[Display(ResourceType = typeof(Label), Name = "DocumentNumber")]
public string DocumentNumber { get; set; }
(etc...)
}
任何人都可以指向一個解決方案嗎?我需要標籤本地化數據註釋(因此DisplayAttribute)。
感謝您的有益迴應和意見。它適用於規則,但是當我沒有指定規則(對於不可空值不需要)時,它使用默認解析器。我不能'找到類似的調整 – Hefass
似乎FluentValidationModelValidatorProvider如果需要添加「必需」,但用戶沒有指定他自己(流利)。不幸的是,在FluentValidationPropertyValidator的ctor中,存在創建PropertyRule的默認邏輯,並且它重寫了在PropertyRule ctor中正確設置的DisplayName。我把它看成是一個錯誤。 https://github.com/JeremySkinner/FluentValidation/blob/11e46cba4727f2e7e0a06de51b4d0e4bd92ba341/src/FluentValidation.Mvc3/PropertyValidatorAdapters/FluentValidationPropertyValidator.cs#L30 – Hefass
你的意思是,這個問題是當你把一個空值的非null的屬性?這與FluentValidation無關,但與Mvc的默認模型綁定相關。 –