解决 CustomAttribute不't work

龙4ik

会员
已加入
2020年10月24日
留言内容
16
编程经验
Beginner
大家好你们好!
我尝试创建福彩12选5走势图,该福彩12选5走势图将验证用于解析为DateTimeOffset的字符串格式。
这是DateStringAttribute代码:
C#:
public class DateStringAttribute :  ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            string date = value.ToString();
            var format = "ddd MMM dd yyyy HH:mm:ss 'GMT'zzzz";
            IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;

            DateTimeOffset startDate;

            if (!DateTimeOffset.TryParseExact(date, format, provider, DateTimeStyles.AllowWhiteSpaces, out startDate))
            {
                throw new Exception("Something went wrong");
            }

            return true;
        }
    }

型号代码:
C#:
public class User
    {
        [DateString]
        public string Date { get; set; }
    }

和Main():
C#:
public static void Main()
        {
            try
            {

                User user = new User { Date = "Fri Aug 30 2014 00:00:00 GMT+0300" };

                Console.WriteLine(user.Date);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

如果福彩12选5走势图有效,则会引发异常,但是不起作用,我无法理解为什么?
感谢您的任何帮助!!!!
 
Solution
DataAnnotations命名空间是为ASP.Net MVC和数据控件元数据设计的,它对常规的类和福彩12选5走势图分配不执行任何操作。您可以使用Validator类的方法之一来按需进行验证。

IsValid返回一个布尔值,指示对象是否有效,因此您应该返回false而不是引发异常。此示例验证所有福彩12选5走势图并收集错误结果,但前提是TryValidateObject无例外地完成。
C#:
var errorResults = new List<ValidationResult>();
if (Validator.TryValidateObject(user, new ValidationContext(user), errorResults, true))
{
    Console.WriteLine(user.Date);
}
顺便说一句,看来您的z太大了...

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,028
地点
挪威
编程经验
10+
DataAnnotations命名空间是为ASP.Net MVC和数据控件元数据设计的,它对常规的类和福彩12选5走势图分配不执行任何操作。您可以使用Validator类的方法之一来按需进行验证。

IsValid返回一个布尔值,指示对象是否有效,因此您应该返回false而不是引发异常。此示例验证所有福彩12选5走势图并收集错误结果,但前提是TryValidateObject无例外地完成。
C#:
var errorResults = new List<ValidationResult>();
if (Validator.TryValidateObject(user, new ValidationContext(user), errorResults, true))
{
    Console.WriteLine(user.Date);
}
顺便说一句,看来您的z太大了 格式字符串.

另外,在TryParseExact调用中,您不使用解析日期,因此intellisense建议丢弃该日期: TryParseExact( ... , out _)
 
最佳 底部