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

时间:2010-11-07 17:58:13

标签: asp.net-mvc entity-framework asp.net-mvc-2

我有这个问题一直困扰着我。

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

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

  3. 问题: 当发布第二个编辑表单时,显然我被用户名RequiredAttribute。

    我只需在“排除”选项中添加“Bind”属性即可解决此问题,但这是我当前的模型:

    public class AccountDetailsModel
    {
        public User user { get; set; }
        public string NEWPASSWORD1 { get; set; } // new password
        public string NEWPASSWORD2 { get; set; } // new password comparison
    }
    

    看起来像带有排除的绑定属性选项不能处理复杂的模型类型。我不能让它在这种情况下工作。

    我陷入困境,现在长时间挠头......

    我怎样才能克服这一点?

    我只想在两个不同的视图上重复使用我的EF实体(用户)及其DataAnnotations。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

  

我只想在两个不同的视图上重复使用我的EF实体(用户)及其DataAnnotations。

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

答案 1 :(得分:0)

将UserName放在详细信息页面的隐藏输入字段中。