我需要用经典的 MVC 架构构建一些 Web 屏幕,包含索引页面(列出我的类的所有实例)、详细信息(检查我的类的详细信息)、编辑(编辑类数据)和删除(删除类实例)。
我正在使用 Viewmodel 和 Automapper。我对在这种情况下分配 ViewModels 和 Automapper 的正确方法有疑问,因为索引将有一个类的集合,而每个其他视图将只有一个实例:
提议代码:
选项1:每个视图一个类:
public class Person
{
int id;
string Name;
int Age;
}
public class PersonViewModel
{
int id;
[Display(name = "Person name")]
string Name;
[Display(name = "Person age")]
int Age;
}
public class PersonIndexViewModel
{
List<PersonViewModel> Personlist;
}
PersonController:
{
var personList = db.List(); // Get data from db
PersonIndexViewModel indexview = new PersonIndexViewModel();
foreach (var item in personList)
{
var tempview = new PersonViewModel();
Map.Create (...); << Here ? How ?
indexview.PersonList.Add (tempview);
}
return view (indexview);
}
选项 2:一个视图模型:
public class Person
{
int id;
string Name;
int Age;
}
public class PersonViewModel
{
int id;
[Display(name = "Person name")]
string Name;
[Display(name = "Person age")]
int Age;
}
PersonController:
{
var personList = db.List(); // Get data from db
List<PersonViewModel> viewList = new List<PersonViewModel>();
foreach (var item in personList)
{
var tempview = new PersonViewModel();
Map.Create (...) // Here ? How ??
viewList.Add (tempView);
}
return view (viewList);
}
如果选项2有什么问题吗?这种情况下的最佳做法是什么?谢谢!