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中都这样做。同样,如果我想添加新属性,则必须在所有模型中都添加。
我是对的还是可以简化的?
(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