构建其中使用的视图模型和类

时间:2012-01-15 14:12:56

标签: asp.net-mvc

我正在寻找管理视图模型的好方法,尤其是这些视图模型中使用的类。我在下面举例说明:

让我们说我想要显示一个包含项目(标题,内容,类别......)的视图,并在其下面显示一些相关项目(同一类别)的列表。我专门为这个视图创建了一个视图模型。这是:

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,我想做出很好的选择......

感谢。

2 个答案:

答案 0 :(得分:0)

这是一种很好的做法。使用View Models可以向View传递或从View中检索必要的数据。这正是让他们看到模型的原因。专为View设计的类。

至于“太多”或混淆的问题,这只涉及到您的项目/解决方案组织。有足够的逻辑分离,以便明确所有课程的存在。

答案 1 :(得分:0)

我不会将嵌套类用于视图模型。为了引用它们,您必须始终指定基类。在编写域模型和视图模型之间的映射时,这可能会特别烦人。如果您害怕包含视图模型的文件很多,您仍然可以将所有相关视图模型放在与父模型相同的.cs文件中。