所以,我有一个问题,我很好奇。我有一个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,以便在创建帐户时可以使用这些字段,但在编辑帐户时不需要?也就是说,我想保持这些字段是相同的(在编辑帐户中不可编辑?)
答案 0 :(得分:3)
您可以将一些虚拟值输出到视图中的隐藏字段中,这样当它们返回时它们不会为空,但是,更多的数据是来回推送的。
其次,您可以从模型状态中删除密钥,从而消除其错误。
ModelState.Remove("UserName");
ModelState.Remove("Password");
ModelState.Remove("ConfirmPassword");
执行此操作后,当您调用ModelState.IsValid时,它将仅根据您感兴趣的字段给出答案
HTH