asp.net mvc中的自定义日期验证器

时间:2011-09-28 12:43:09

标签: ajax asp.net-mvc-3 date validation user-registration

我有问题...... 我有一个用户注册表格..在这种形式我有3个字段代表出生日期,月份和年份。我喜欢有3个不同的字段(3个菜单)。如何创建一个允许我检查有效日期的验证器? (不接受像2011年2月30日这样的日期)我可以在JavaScript(客户端)中完成它,但即使我想在模型-vew-controller中像往常一样使用验证器?

2 个答案:

答案 0 :(得分:2)

您可以将验证器绑定到类而不是属性。 我会做那样的事情:

//The Model
[DateValidator]
public class Date
{
    public string Month { get; set; }
    public string Day { get; set; }
    public string Year { get; set; }
}

//The DataAnnotation
[AttributeUsage(AttributeTargets.Class)]
class DateValidatorAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var date = value as Date;
        Debug.Assert(date != null);

        var dateString = date.Month + date.Day + date.Year;
        DateTime dateTime;
        var isValid = DateTime.TryParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None,
                                             out dateTime);
        return isValid;
    }
}

修改

DateTime.TryParseExact检查DateTime的有效性(即如果您尝试解析30/02/2011,它将返回false)。

答案 1 :(得分:0)

创建模型绑定器,它将从上下文中获取这3个字段并完全验证它们。