我正在使用MVC和Entity Framework开展项目。目前,我正在做的是我使用控制器直接在其Action方法中使用实体框架自动生成的模型执行“TryUpdateModel”。
我的问题是,这是一个好的/推荐的方法吗?当然,模型I仍然传递给存储库类以进行进一步处理和保存。
我很好奇。如果我为自动生成的模型创建“包装”模型怎么办? ViewModel可以成为这个“包装”模型吗?
答案 0 :(得分:1)
你的想法很好。最好使用包装器模型而不是自动生成的模型。因为自动生成的模型具有DAO(数据访问对象)的作用,有时不适合您对View Model的需求。
实际的视图模型应该是包装模型。因为有时您只需要DAO的块(自动生成的模型)。
答案 1 :(得分:1)
您应该避免直接更新模型或确保明确设置允许绑定的属性。原因是您使用的方法是将代码打开到称为重叠的漏洞。
总之,重叠是黑客修改表单以注入他们不应该更新的属性。见这里:http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx
除此之外,它与任何其他设计决策一样。两种方式都有一些优点和缺点。如果按照自己的方式执行,则可以减少编写/维护的代码。但是,一旦您需要进行更改,您的灵活性就会降低,因为表单和模型需要匹配,这并不总是构建表单的最佳方式。