有人有 C# MVC 的出生日期验证属性吗?

发布于 2024-09-11 15:09:00 字数 108 浏览 4 评论 0原文

之前一定有人写过这个:-)

我需要一个出生日期的验证属性来检查该日期是否在特定范围内 - 即用户没有输入尚未发生的日期或距该日期 150 年的日期过去的。

感谢您的指点!

Someone must have written this before :-)

I need a validation attribute for date of birth that checks if the date is within a specific range - i.e. the user hasn't inputted a date that hasn't yet happened or is 150 years in the past.

Thanks for any pointers!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不寐倦长更 2024-09-18 15:09:00
[DateOfBirth(MinAge = 0, MaxAge = 150)]
public DateTime DateOfBirth { get; set; }

// ...

public class DateOfBirthAttribute : ValidationAttribute
{
    public int MinAge { get; set; }
    public int MaxAge { get; set; }

    public override bool IsValid(object value)
    {
        if (value == null)
            return true;

        var val = (DateTime)value;

        if (val.AddYears(MinAge) > DateTime.Now)
            return false;

        return (val.AddYears(MaxAge) > DateTime.Now);
    }
}
[DateOfBirth(MinAge = 0, MaxAge = 150)]
public DateTime DateOfBirth { get; set; }

// ...

public class DateOfBirthAttribute : ValidationAttribute
{
    public int MinAge { get; set; }
    public int MaxAge { get; set; }

    public override bool IsValid(object value)
    {
        if (value == null)
            return true;

        var val = (DateTime)value;

        if (val.AddYears(MinAge) > DateTime.Now)
            return false;

        return (val.AddYears(MaxAge) > DateTime.Now);
    }
}
诠释孤独 2024-09-18 15:09:00

我创建了一个验证类,可以在其中验证数据。在我的课程中,我有两种验证出生日期的方法:一种采用字符串参数,另一种采用日期参数。
这是基本方法:

public static bool DateOfBirthDate(DateTime dtDOB) //assumes a valid date string
{
    int age = GetAge(dtDOB);
    if (age < 0 || age > 150) { return false; }
    return true;
}

这是完整的类:

using System;
using System.Collections.Generic;
using System.Text;

namespace YourNamespaceHere
{
    public class Validate
    {
        public static bool DateOfBirthString(string dob) //assumes a valid date string
        {
            DateTime dtDOB = DateTime.Parse(dob);
            return DateOfBirthDate(dtDOB);
        }

        public static bool DateOfBirthDate(DateTime dtDOB) //assumes a valid date
        {
            int age = GetAge(dtDOB);
            if (age < 0 || age > 150) { return false; }
            return true;
        }

        public static int GetAge(DateTime birthDate)
        {
            DateTime today = DateTime.Now;
            int age = today.Year - birthDate.Year;
            if (today.Month < birthDate.Month || (today.Month == birthDate.Month && today.Day < birthDate.Day)) { age--; }
            return age;
        }

    }
}

这是我在 Xamarin.Forms 应用程序中调用该方法的方式:

bool valid = Validate.DateOfBirthDate(pickerDOB.Date);

其中 pickerDOB 是我表单上的日期选择器。这使得从任何地方调用验证方法并验证字符串或 DateTime 对象变得很容易。

I made a Validate class where I can validate data. In my class I have 2 methods for validating date of birth: 1 that takes a string parameter and the other takes a date parameter.
Here is the basic method:

public static bool DateOfBirthDate(DateTime dtDOB) //assumes a valid date string
{
    int age = GetAge(dtDOB);
    if (age < 0 || age > 150) { return false; }
    return true;
}

Here is the full class:

using System;
using System.Collections.Generic;
using System.Text;

namespace YourNamespaceHere
{
    public class Validate
    {
        public static bool DateOfBirthString(string dob) //assumes a valid date string
        {
            DateTime dtDOB = DateTime.Parse(dob);
            return DateOfBirthDate(dtDOB);
        }

        public static bool DateOfBirthDate(DateTime dtDOB) //assumes a valid date
        {
            int age = GetAge(dtDOB);
            if (age < 0 || age > 150) { return false; }
            return true;
        }

        public static int GetAge(DateTime birthDate)
        {
            DateTime today = DateTime.Now;
            int age = today.Year - birthDate.Year;
            if (today.Month < birthDate.Month || (today.Month == birthDate.Month && today.Day < birthDate.Day)) { age--; }
            return age;
        }

    }
}

Here is how I'm calling the method in my Xamarin.Forms app:

bool valid = Validate.DateOfBirthDate(pickerDOB.Date);

Where pickerDOB is a date picker on my form. This makes it easy to call the validation methods from anywhere and validate a string or DateTime object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文