Asp.net mvc MVC2,在各种视图中使用相同的EF实体

Asp.net mvc MVC2,在各种视图中使用相同的EF实体,asp.net-mvc,entity-framework,asp.net-mvc-2,Asp.net Mvc,Entity Framework,Asp.net Mvc 2,我有一个问题,过去几个小时一直困扰着我 假设我有这个注册表单,我需要填写它,所有属性都有RequiredAttribute,模型是一个名为“User”的EF实体 我有第二个编辑帐户详细信息表单,此时不再需要特定字段(“用户名”),因为我已经有了它,用户不需要再次填写它,事实上它不会显示在编辑表单上 问题是: 当发布第二个编辑表单时,显然我被Username required属性绊住了 我只需要添加一个带有“Exclude”选项的“Bind”属性就可以解决这个问题,但是,这是我当前的模型: pub

我有一个问题,过去几个小时一直困扰着我

  • 假设我有这个注册表单,我需要填写它,所有属性都有RequiredAttribute,模型是一个名为“User”的EF实体

  • 我有第二个编辑帐户详细信息表单,此时不再需要特定字段(“用户名”),因为我已经有了它,用户不需要再次填写它,事实上它不会显示在编辑表单上

  • 问题是: 当发布第二个编辑表单时,显然我被Username required属性绊住了

    我只需要添加一个带有“Exclude”选项的“Bind”属性就可以解决这个问题,但是,这是我当前的模型:

    public class AccountDetailsModel
    {
        public User user { get; set; }
        public string NEWPASSWORD1 { get; set; } // new password
        public string NEWPASSWORD2 { get; set; } // new password comparison
    }
    
    看起来带排除选项的Bind属性不能处理复杂的模型类型。我无法让它在这种情况下工作

    我陷入困境,抓挠我的头很长一段时间了

    我怎样才能克服这个问题

    我只想在2个不同的视图上重复使用我的EF实体(用户)及其数据注释


    提前感谢。

    在详细信息页面的隐藏输入字段中输入用户名

    我只想在2个不同的视图上重复使用我的EF实体(用户)及其数据注释


    问题出在这里。你不应该这样做。我建议您设置视图模型,这些模型是专门为给定视图定制的类,并且只包含此视图所需的验证属性。为了简化EF模型和您可以使用的视图模型之间的映射。

    不是很安全,您确定吗?您应该对访问/更改此类信息的用户进行身份验证/授权。总之,对吗?我试图避免用基本相同的验证重新编写相同的属性,这是最好的方法吗?我不能重复使用它吗?继承或类似的东西?不,不要对视图模型使用继承,不,它们不是相同的属性。验证逻辑是不同的。在某些视图中,某些属性是必需的,而在其他视图中则不是必需的。当然,您必须重复一些属性,但这不是问题。不过,您可以在视图模型之间使用继承。