0

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

现在我的问题是:我应该为这种情况创建一个 View Model 类还是应该使用实际的 Account 模型类?我想我将不得不创建一个 View Model 类,因为我只需要 Account 模型类中的“一些”属性,但如果我这样做,我将如何使其“可编辑”并随后映射编辑的属性(如果有的话) 到实际的 Account 模型类?

另外,如果我需要创建一个视图模型类,请告诉我需要在哪里存储视图模型类。

4

1 回答 1

0

我应该为这种情况创建一个 View Model 类还是应该使用实际的 Account 模型类?

是的,最好创建一个模型来代表您需要的操作,并这样做以防止发布不足和过度发布。所以你在你期望用户工作的地方工作。例如,如果你有一个AccountModel有很多属性的,你只需要在一个动作上处理它的十个,在一个add动作上处理它的五个属性edit,那么你创建两个 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;}
}

现在要将您的视图模型映射到您的实际模型或实体,您可以使用映射器工具或自己做(很累,但对于小模型来说是一个选项)。以下是步骤:

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

我到底需要在哪里存储 View Model 类

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

于 2013-04-09T06:15:27.243 回答