【发布时间】:2010-02-17 12:30:50
【问题描述】:
从现在开始我就使用了出色的FluentValidation 库来验证我的模型类。在 Web 应用程序中,我也将它与 jquery.validate 插件结合使用来执行客户端验证。 一个缺点是大部分验证逻辑在客户端重复,不再集中在一个地方。
出于这个原因,我正在寻找替代方案。 there 中的 many 示例显示了使用数据注释来执行模型验证。它看起来很有希望。 我不知道的一件事是如何验证依赖于另一个属性值的属性。
我们以下面的模型为例:
public class Event
{
[Required]
public DateTime? StartDate { get; set; }
[Required]
public DateTime? EndDate { get; set; }
}
我想确保EndDate 大于StartDate。我可以写一个自定义
验证属性扩展 ValidationAttribute 以执行自定义验证逻辑。不幸的是,我找不到获得
模型实例:
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value represents the property value on which this attribute is applied
// but how to obtain the object instance to which this property belongs?
return true;
}
}
我发现CustomValidationAttribute 似乎可以完成这项工作,因为它具有包含正在验证的对象实例的ValidationContext 属性。不幸的是,此属性仅在 .NET 4.0 中添加。所以我的问题是:我可以在 .NET 3.5 SP1 中实现相同的功能吗?
更新:
似乎FluentValidation already supports ASP.NET MVC 2 中的客户端验证和元数据。
尽管数据注释是否可用于验证依赖属性,但还是很高兴知道。
【问题讨论】:
-
您或是否有人想出一种方法让 dataannotations 和 FluentValidation 在同一个类/模型上一起工作(用于验证)?如果是这样那就太棒了,我有一个关于这个与 FV 作者 Jeremy 讨论的帖子,你可以在这里查看:fluentvalidation.codeplex.com/Thread/View.aspx?ThreadId=212371
标签: validation .net-3.5 asp.net-mvc-2 data-annotations