1

我正在尝试更深入地了解 ViewModel,并且我已经阅读了许多关于 MVC 中的 ViewModel 的文章和博客。在一些文章中说不应从 ViewModel 中引用模型,但在其他一些文章中,建议使用模型作为视图模型的成员。

让我们举一个例子,我必须基于模型创建一个 ViewModel。我可以通过两种方式做到这一点:

1

 public class Car
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more properties......
}

public class CarViewModel
{
  public CarViewModel(Car model)
  {
    Model = model;
  }

  public Car Model { get; set; }
 //additional view model specific properties
}

或 2。

public class Car
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more Car properties......
}

public class CarViewModel
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more Car properties......

     //additional view model specific properties
}

我只是想知道哪一种是创建 ViewModel 的正确方法。或者有没有其他方法可以完全做到这一点?

4

1 回答 1

2

Car当模型是数据持久性说它是由实体框架创建的类时,我会选择第二种方法。在这种情况下,我不希望这些模型在控制器和视图中浮动。我将创建一个与您所做的等效的视图模型,并使用诸如AutoMapper映射属性之类的工具。

在第一种方法中,视图模型充当包装器。如果您想在与该模型相关的视图中显示附加信息,则可以使用此功能。假设您必须添加几个 UI 字段,并且绝对不应该在 Car 模型中这样做,并且您必须创建一个包含Car模型和其他 UI 字段的视图模型。

基本上,View Models 可以帮助您保持业务模型免受 UI 内容的影响,并有助于避免模型中的数据库内容浮动在视图和控制器中。因此,您可以根据场景使用两种方法。

希望这能回答你的问题。

于 2012-06-15T02:28:00.413 回答