我可以将PersonViewModel缩短为PersonModel吗?

时间:2015-03-07 23:29:27

标签: asp.net-mvc

在MVC理论中,模型是业务领域类。例如,我们可以有一个Person类:

public class Person
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

在ASP.NET MVC中,经常使用ViewModel类。可以根据特定视图定制此类:

public class PersonViewModel 
{
    public int Id { get; set; } 
    public string Name { get; set; }
    public bool Deactivate { get; set; }
}

在此示例中,FirstNameLastName将合并为一个字符串(Name),并且还会有一个"停用"表单上的复选框将导致此人失效。

在Controller中,我们从PersonViewModel对象填充Person对象。但是,在视图的第一行,我们声明此视图的模型PersonViewModel

@model PersonViewModel

模型实际上是绑定到View的类(至少就ASP.NET MVC而言)?

如果我的模型实际上是PersonViewModel类,我可以只调用此类PersonModel吗?或者这是错误和误导?

在我看来,这更易于编写(和阅读),并且从ASP.NET MVC开始向开发人员解释也更容易。完全忽略ViewModel术语是不是更好,这可能与MVVM模式中的ViewModel混淆了?

2 个答案:

答案 0 :(得分:1)

我认为这个问题没有好的答案。您提供的两个名称都是自解释的,可以使用。

罗伯特·C·马丁(Robert C. Martin)在他的书中写道,在这种情况下,最重要的是一致性和标准化。如果您在少数开发人员的团队中工作,您应该使用常见的方法解决此类问题,并始终使用相同的代码模式以避免混淆。因为这种混乱是浪费开发人员的时间。

我会向您推荐这本关于清洁代码的Clean Code: A Handbook of Agile Software Craftsmanship精彩书籍,您可以在这里找到许多问题的答案和建议。


在我目前的团队中,我们会使用这样的约定:

PersonDom - 人员数据对象模型
Person - 人物视图模型

答案 1 :(得分:1)

当然这个问题没有绝对的答案, 会议的内容""那是" PersonViewModel"是一个基于" Person" class,但是要在MVC视图中使用。 即使在基本的MVC项目中,你也有LoginViewModel等......所以对于新的mvc开发人员来说也应该是可以理解的。

仅仅使用PersonModel,会让人感到困惑,因为" Person"已经是模型了,为什么要命名一个PersonModel类?没有意义。 如果要缩短它,则应使用PersonView。 (但同样,约定是PersonViewModel)

相关问题