如何将ViewModel映射到我的实际模型?

时间:2013-04-09 06:01:07

标签: model-view-controller asp.net-mvc-4

我的应用程序中有一个标签,点击该标签后,用户的详细信息会在可编辑的文本框中显示(使用占位符HTML属性)。用户可以简单地查看它们,也可以编辑他想要的任何细节。

现在我的问题是:我应该为这个场景创建一个View Model类,还是应该使用实际的Account模型类?我想我将不得不创建一个View Model类,因为我只需要来自Account模型类的'some'属性,但是如果我这样做,我将如何使它'可编辑'并随后映射已编辑的属性(如果有的话) )到实际的帐户模型类?

另外,如果我需要创建一个View Model,请告诉我在哪里可以存储View Model。

1 个答案:

答案 0 :(得分:0)

  

我应该为这个场景创建一个View Model类,还是应该使用它   实际的帐户模型类?

是的,最好创建一个代表您需要的操作的模型,并且这样做是为了防止不足和过度发布。因此,您需要处理您希望用户工作的属性。例如,如果您的AccountModel具有大量属性,并且您只需要在add操作上处理其中的10个,并在edit操作中处理其中的5个属性,然后你创建两个ViewModel:

// your model or entity
public class AccountModel {
    // the list of properties goes here
}
// your view models
public class CreateAccountModel {
    public string Username {get;set;}    
    public string Password {get;set;}
    public string Phone {get;set;}
}
// this model is for the scenario 
// where you want users to edit their basic info
// but not the password (e.g. you have a separate
// functionality for changing the password)
public class EditAccountModel {
    public string Username {get;set;}    
    public string Phone {get;set;}
}

现在要将您的视图模型映射到您的实际模型或实体,您可以使用映射工具或自己完成(疲劳但小模型的选项)。以下是步骤:

  • 您从帖子
  • 收到模型/实体
  • 您从数据库中查询实体
  • 您将值从viewmodel复制到模型/实体
  • 您将模型/实体保存回数据库
  

我究竟需要存储View Model类

您可以在创建的Models文件夹下的MVC项目中获取它。这更像是一种偏好,并且没有标准的方法 - 特别是如果你开始分层你的应用程序。把它放在更有意义的地方。