验证验证应用程序块中的DateTime

时间:2010-05-18 11:17:30

标签: .net validation enterprise-library

如何通过验证应用程序块验证DateTime,使其不超过DateTime.Now?

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用Regex进行验证,只需选择时间格式http://regexlib.com/REDetails.aspx?regexp_id=504

答案 1 :(得分:0)

我认为使用验证应用程序块执行此操作的最简单方法是创建一个返回DateTime.Now的属性,然后使用属性比较验证程序。

SelfValidation也可以让你做你想做的事。属性比较验证器允许您外化逻辑,但是公开属性只是为了比较而感觉有点不对。

<强>实施

public class Person
{
    public DateTime Now
    {
        get { return DateTime.Now; }
    }

    public DateTime BirthDate
    {
        get;
        set;
    }
}


<type assemblyName="MyApp.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="MyApp.Entities.Person">   
  <ruleset name="MyRuleSet">
    <properties>
      <property name="BirthDate">
        <validator operator="LessThanEqual" propertyToCompare="Now" negated="false"
          messageTemplate="I don't know nothin' about birthin' no babies in the future." messageTemplateResourceName=""
          messageTemplateResourceType="" tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.PropertyComparisonValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null"
          name="Property Comparison Validator" />
      </property>
    </properties>   
  </ruleset> 
</type>

答案 2 :(得分:0)

您可以使用RelativeDateTimeValidator。以下假设我们没有超过140岁的人(worlds oldest,到目前为止,死亡时为122岁。)

[RelativeDateTimeValidator(-140, DateTimeUnit.Years, 0, DateTimeUnit.Second,
       MessageTemplate = "Sorry, no predicted births allowed.")]
public DateTime DateOfBirth
{ get; set;}