C# 实体框架中的MVC日期时间验证问题

C# 实体框架中的MVC日期时间验证问题,c#,entity-framework,asp.net-mvc-4,validation,C#,Entity Framework,Asp.net Mvc 4,Validation,我有一个自定义登录页面的MVC应用程序。该模型由实体框架生成,称为“用户”。 使用登录时,服务器代码更新登录日期:user.LoginDate=DateTime.Now; 而且效果很好 但现在我开始应用验证。我所做的是: 1) 我创建了另一个类,将其部分化并命名为User.cs: [MetadataType(typeof(UserMetadata))] public partial class User { [Bind] public class UserMetadata

我有一个自定义登录页面的MVC应用程序。该模型由实体框架生成,称为“用户”。 使用登录时,服务器代码更新登录日期:user.LoginDate=DateTime.Now; 而且效果很好

但现在我开始应用验证。我所做的是: 1) 我创建了另一个类,将其部分化并命名为User.cs:

[MetadataType(typeof(UserMetadata))]
public partial class User
{
    [Bind]
    public class UserMetadata
    {
        [DisplayName("Email")]
        [Required(ErrorMessage="Email field is required")]
        [EmailAddress(ErrorMessage = "Invalid Email Address")]
        [StringLength(30)]
        public string UserEmail { get; set; }

        ...

        [Range(typeof(DateTime), "1/1/2010", "2/2/2024", ErrorMessage = "message")]
        public Nullable<System.DateTime> LoginDate { get; set; }
    }
} 
也试过 [DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{yyyyy/MM/dd HH:MM:ss.fff}”)]

但是,这并没有帮助,而且非常令人沮丧,因为当我查看我的数据库时,我发现LoginDate是以正确的格式编写的: 2014-12-26 19:49:12.247


请告知。

我刚刚解决了这个问题。解决方案是:我删除了“[Bind]”属性,现在它可以工作了。

为什么需要验证
LoginDate
?此字段不是用户的输入。您自己的服务器代码为其分配了正确的值。在大多数示例中,元数据类位于它所描述的类的外部,这可能是一个问题。此外,元数据属性属于对象类型。但我只是在这里猜测。也许你根本不需要元数据:马克,我真的不需要验证这个字段。原因如下:用户数据库模型大约有8个字段。我的另一个user.cs类最初仅用于验证目的,它只有两个字段,我在其中放置了要验证的属性。然而,当我试图更新logindate字段时,我遇到了一个错误,所以我决定这是因为我的另一个部分用户类缺少我正在更改的字段的验证属性
       [DataType(DataType.DateTime)]
       [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{yyyy/MM/dd HH:mm:ss tt}")]