由于未设置所需属性,ModelState为false

时间:2015-07-20 14:32:53

标签: c# asp.net-mvc-4 viewmodel

所以,我有一个问题,我很好奇。我有一个UserAccountViewModel,我正在重新使用创建帐户视图和编辑帐户视图。这样我可以为我的代码使用一个视图和一个视图模型,但不同的控制器操作。

在创建帐户,用户名,密码和确认密码都是必填字段。但是,在“编辑帐户”上,这些字段不是必填字段(我在“编辑帐户”的视图中隐藏了这些字段)。

问题在于我这样做:

  [Table("ChatHistory", Schema = "PROYECT")]    
    public class ChatHistory
    {       
        [Key]     
        public int Id { get; set; }
        public int ChatId { get; set; }
        public int UserId { get; set; }
        public string Message { get; set; }
        public DateTime Date { get; set; }
     }

我的ModelState.IsValid返回false,我在上面添加了errors语句,它说:

这是因为需要UserName,Password和Confirm Password字段。如何重用我的viewmodel,以便在创建帐户时可以使用这些字段,但在编辑帐户时不需要?也就是说,我想保持这些字段是相同的(在编辑帐户中不可编辑?)

1 个答案:

答案 0 :(得分:3)

您可以将一些虚拟值输出到视图中的隐藏字段中,这样当它们返回时它们不会为空,但是,更多的数据是来回推送的。

其次,您可以从模型状态中删除密钥,从而消除其错误。

ModelState.Remove("UserName");
ModelState.Remove("Password");
ModelState.Remove("ConfirmPassword");

执行此操作后,当您调用ModelState.IsValid时,它将仅根据您感兴趣的字段给出答案

HTH