This question already has answers here:
Why do we use ViewModels?
                                
                                    (4个答案)
                                
                        
                                2年前关闭。
            
                    
我正在使用ASP.NET MVC构建Web应用程序,并且仍然是使用该技术的初学者。

我了解到,最好的做法是为每个视图都有一个ViewModel。我能理解为什么这是一个好主意。但是,在我的情况下,这似乎会产生很多额外的工作。

我有一个名为Rule的模型。
它包含ID,标题,描述,LastModifiedDate,CreatedDate等字段。

我有规则模型的“编辑”,“创建”和“详细信息”视图。

根据最佳实践,我必须为上述每个视图创建一个ViewModel。但是以上视图的ViewModels几乎相同。唯一的区别之一是Create-ViewModel没有ID,而Details和Edit ViewModels有。除此之外,ViewModels几乎相同。也就是说,它们包含相同的属性和相同的DataAnnotation验证字段。

为什么我觉得这很麻烦?假设我想更改一些数据注释。例如。改变字符串属性的最大长度。如果希望这样做,则必须在Rule模型,Create ViewModel和Edit ViewModel中都这样做。同样,如果我想添加新属性,则必须在所有模型中都添加。

我是对的还是可以简化的?

最佳答案

嗯,这更多是一个实施决策,而不是最佳实践规则。您必须考虑一些利弊:

每个视图的不同ViewModel


仅修改与视图关联的ViewModel
灵活性
大型应用程序难以维护


为不同的视图重用ViewModels


一次修改所有ViewModel
容易维护
灵活性有限


我的建议是创建没有ID属性的基本RuleViewModel,对于edit和detail操作,继承该模型并添加其他列。

关于c# - asp.net mvc-几乎相同的ViewModels ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44304172/

10-12 15:29