如何制作自定义日期验证属性?

时间:2017-03-30 02:57:38

标签: c# asp.net asp.net-mvc

我需要帮助在EditorFor中格式化这样的日期。 3/2017等等。我尝试编码,但我发现出了问题。

示例:

public class ValidDate : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dateTime;

        var isValid = DateTime.TryParseExact(Convert.ToString(value),
            "MM/yyyy",
            CultureInfo.CurrentCulture,
            DateTimeStyles.None,
            out dateTime);

        return isValid;
    }
}

[ValidDate]
public DateTime Date { get; set; }

有效结果示例:

1/2017
2/2017
3/2017
4/2017
5/2017
6/2017
7/2017
8/2017
9/2017
10/2017
11/2017
12/2017

1 个答案:

答案 0 :(得分:1)

我检查了你的属性,发现你将日期作为M / yyyy格式传递。 这就是您需要更改属性的原因如下:

public class ValidDate : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dateTime;

        var isValid = DateTime.TryParseExact(Convert.ToString(value),
            "M/yyyy",
            CultureInfo.CurrentCulture,
            DateTimeStyles.None,
            out dateTime);

        return isValid;
    }
}