您正在使用与模型和视图模型相同的类。这是MVC在这两种类型之间不一致的原因。您确实应该添加一个单独的模型和一个单独的视图模型类。
IsValid() 被叫了两次
IsValid()
在控制器动作之前,因为在调用动作之前验证了数据
db.SaveChanges()之所以继续,是因为数据库上下文也进行了验证
db.SaveChanges()