c# - 在导航属性上定义数据注释

标签 c# asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-4

我有一个 Person 类。一个人有名字和称呼。 Salutation是数据库中的另一个表(我继承了数据库)。

在 UI 中,我希望 Salutation 成为必填字段。这是我的模型的样子:

public partial class Person
    {
        public virtual string Id { get; set; }

        public virtual Nullable<long> SalutationId { get; set; }

        [Required]
        public virtual Salutation Salutation { get; set; }

        public virtual string FirstName { get; set; }

        [DisplayName("Last Name")]
        public virtual string LastName { get; set; }
    }

    public partial class Salutation
    {
        public virtual long Id { get; set; }

        public virtual string SalutationName { get; set; }

        public virtual string Status { get; set; }

        public virtual ICollection<Person> People { get; set; }
    }

这是正确的吗?即使我输入了称呼,我仍然收到“称呼是必填字段”的验证错误。

所有这一切都在一小时前开始,直到一切正常。

如果我有时间思考并且不追赶最后期限,我会自己解决这个问题。奇怪的是压力对你的大脑有什么影响。

最佳答案

简短回答:问题出在您为您的称呼放置所需验证的地方

您的称呼验证属性应放在Salutation 模型 中。

编辑:除此之外,您的模型还在每个属性上使用 public virtual 访问修饰符。如果我的模型不需要,我会删除 virtual

关于c# - 在导航属性上定义数据注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916903/

相关文章:

c# - 如何将两种方法转换为一种方法以提高效率?

javascript - 有没有办法在 ajax POST 请求中发送对象和单独的变量

c# - 如何在我的 View 中单击按钮时从 session ["cart"] 中删除项目?

c# - ASP.NET MVC 4 不会将 multipart/form-data 序列化为 C# 对象

asp.net-mvc - "It is not possible to profile 32-bit and 64-bit applications at the same time"错误

asp.net-mvc-3 - MVC3 : Custom AuthorizeAttribute

c# - ajax.actionlink 调用 Controller Action

c# - User32 SetWindowLong 接受 int 而不是 long

c# - 我可以让所有使用相同 key 签名的程序集都可以看到内部结构吗?

c# - 有没有办法从 StreamReader 中删除第一行