我正在寻找管理视图模型的好方法,尤其是这些视图模型中使用的类。我在下面举例说明:
让我们说我想要显示一个包含项目(标题,内容,类别......)的视图,并在其下面显示一些相关项目(同一类别)的列表。我专门为这个视图创建了一个视图模型。这是:
public class ProjectDetailsViewModel
{
public ProjectFullViewModel OneProject { get; set; }
public IEnumerable<ProjectLightViewModel> RelatedProjects { get; set; }
// Below are the classes used in this view model
public class ProjectFullViewModel
{
public int ProjectID { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
public string Category { get; set; }
public string Client { get; set; }
public int Year { get; set; }
public IEnumerable<Technology> Technologies { get; set; }
public byte[] ScreenshotData { get; set; }
public string ScreenshotName { get; set; }
public int ScreenshotLength { get; set; }
public string ScreenshotType { get; set; }
public byte[] BackgroundData { get; set; }
public string BackgroundName { get; set; }
public int BackgroundLength { get; set; }
public string BackgroundType { get; set; }
}
public class ProjectLightViewModel
{
public int ProjectID { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
public string Category { get; set; }
public string Client { get; set; }
public string Year { get; set; }
}
}
如您所见,此视图模型中使用的所有类都包含在其中。我认为这更容易关注使用的内容。你怎么看?这是一个好/坏的做法?一些建议?我注意到,当我们使用很多视图模型和类时,我们可能会有点困惑。不要责怪我,我还在学习ASP.NET MVC,我想做出很好的选择......
感谢。
答案 0 :(得分:0)
这是一种很好的做法。使用View Models可以向View传递或从View中检索必要的数据。这正是让他们看到模型的原因。专为View设计的类。
至于“太多”或混淆的问题,这只涉及到您的项目/解决方案组织。有足够的逻辑分离,以便明确所有课程的存在。
答案 1 :(得分:0)
我不会将嵌套类用于视图模型。为了引用它们,您必须始终指定基类。在编写域模型和视图模型之间的映射时,这可能会特别烦人。如果您害怕包含视图模型的文件很多,您仍然可以将所有相关视图模型放在与父模型相同的.cs
文件中。