【发布时间】:2015-03-07 23:29:26
【问题描述】:
在 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; }
}
在此示例中,FirstName 和 LastName 将组合为一个字符串 (Name),并且表单上还会有一个“停用”复选框,这将导致此人停用。
在 Controller 中,我们从 Person 对象填充 PersonViewModel 对象。但是,在 View 的第一行,我们声明这个 View 的 Model 是PersonViewModel。
@model PersonViewModel
Model 实际上不是绑定到 View 的类吗(至少就 ASP.NET MVC 而言)?
如果我的模型实际上是 PersonViewModel 类,我可以将这个类称为 PersonModel 吗?或者这是错误的和误导性的?
在我看来,这更容易编写(和阅读),而且向刚开始使用 ASP.NET MVC 的开发人员解释起来也更容易。完全省略 ViewModel 术语不是更好吗,它会与 MVVM 模式中的 ViewModel 混淆?
【问题讨论】:
-
当您使用“PersonViewModel”时,这是 100% 确定您正在将此模型用于视图,而 PersonModel 可能会误导
-
我认为
PersonViewModel在定义意图方面比PersonModel更清晰(可能与数据/域模型混淆)。最重要的是保持一致。 -
@StephenMuecke - 我同意“PersonViewModel”毕竟是更好的方法。如果您将您的评论重新发布为答案,我会将其标记为已接受。
-
@ZivWeissman - 如果您还想重新发布您的评论作为答案,我会投票或标记为已接受。
标签: asp.net-mvc